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 |
