Courses in Computer Science

CMPSC-F112 Computer Modeling and Problem Solving

The purpose of this course is to introduce students to the use of the computer as a tool in solving problems. Many of the problems are mathematical in nature, involving functions, graphs, rates of change, and other important concepts. Other types of...

As needed
CMPSC-F120 Programming for World Wide Web

This is a hands-on course aimed at non-CS students who want to learn how to build interesting and interactive web pages. We do not use any drag- and-drop software for this purpose. Instead we cover the basics of HTML and PHP and, if time permits, we...

Fall, Spring, Summer I, Summer II
CMPSC-F123 Social and Technical Aspects Comp Systems

This course is a technical introduction to Social Informatics: the discipline that studies the design, uses, and consequences of information and communication technologies (ICT) and that takes into account their interactions with institutional and...

As needed
CMPSC-F131 (F600) Computer Science I

Computer Science I (CSI) is the first Computer Science major course (and as such is a prerequisite to any other CS major course). The purpose of CSI is to teach the foundations of Computer Science and mainly of computer programming (yes, Computer...

Fall, Spring
CMPSC-F132 (F601) Computer Science II

Computer Science II (CSII) is the continuation of Computer Science I. The purpose of CSII is to expand students' understanding of Computer Science and computer programming, assuming that they have the basic knowledge of the a href="http://en.wikipedia...

Fall, Spring
CMPSC-F220 Website Engineering I

This is an intermediate course in website development and engineering for students with some programming experience. Topics include programmatic website design and engineering, database design and implementation, database-driven web systems, and e-...

As needed
CMPSC-F253 (F602) Assembly Language and Computer Structure

Introduction to computer architecture and machine language programming, internal representation of data and programs, and assembly language programming. Machine and assembly language implementations of constructs from higher-level languages such as C (...

Fall, Spring
CMPSC-F265 (F603) Data Structures and Algorithms

Includes topics such as strings, stacks, queues, lists, trees, graphs, sorting, searching, hashing, dynamic storage allocation, and analysis of algorithms. Most programming will be done in the C language.

Fall, Spring
CMPSC-F331 (F608) Object Oriented Programming

Object-Oriented Programming in C++ is taught using Trolltech's multi-platform Qt library and other open-source libraries and tools.

Fall, Spring
CMPSC-F332 (F609) Java Programming

This course is designed to be a comprehensive overview of the Java language. Students will understand exactly what Java is and how to build, compile, and distribute effective standalone Java applications and applets using the Java 2 Software...

As needed
CMPSC-F333 (F606) Organization of Programming Languages

An introduction to functional programming and to the meaning and implementation of various programming language features. The course begins with a brief introduction to the Scheme language, which is then used to write interpreters for small languages...

Spring
CMPSC-F345 Software Engineering

This undergraduate introductory course is an overview of modern software engineering theory, technics, tools, and practices. While the course covers the entire software life cycle, including requirements engineering, software architecture, software...

As needed
CMPSC-F353 (F604) Architecture of Computer Systems

This course deals with the structure and operation of the major hardware components of a computer. Topics include basic logic design, basic datapath construction, basic pipelining, I/O system design, issues in memory hierarchy and network interface...

Fall
CMPSC-F355 (F605) Operating Systems

The purpose of the course is to introduce you to the foundational concepts of modern operating systems, such as processes, threads, virtual memory, file systems, synchronization, and disk management. At the same time, an emphasis is made on system...

Spring
CMPSC-F363 (F607) Introduction to Database Systems

This is an introduction to the design and use of database systems --- systems that manage very large amounts of data. Topics covered include Entity-Relationship (E/R) data model, Relational data model, object-oriented model, and the conversion of E/R...

Fall
CMPSC-F623 Analysis of Algorithms

Basic techniques of design for sequential, parallel and probabilistic algorithms including divide and conquer, greedy method, dynamic programming, etc. Prerequisites: Foundational courses, CMPSC F603 and CMPSC M612.

Fall
CMPSC-F635 Advanced Operating Systems

The topic of the course is distributed systems, including middleware, as well as operating system support for distributed systems. The course addresses such issues as communications between distributed entities, identification of mobile and distributed...

Fall, As needed
CMPSC-F641 (F541) Advanced Databases

Data models, query languages, query optimization, concurrency control, recovery and distributed databases.

Spring
CMPSC-F642 Peer-To-Peer Technology As needed
CMPSC-F643 Intermediate Computer Graphics

This course is an introduction to the basic concepts of computer graphics (both 2D and 3D). It covers scan conversion algorithms, graphics hardware, geometrical transformations, projections, computer-user interaction, curve and surface modeling, the...

As needed