View University CalendarsView University DirectoriesSearch the SiteGo to the SitemapGo to the Homepage

Computer Science Courses

CMSC 100
Exploring Computer Science

An overview of computer science as a broadly based discipline. Emphasis on development of skills in algorithmic thinking, implemented in a subset of a suitable programming language. Brief coverage of selected advanced topics from computer science, applications of computing in other disciplines, and impacts of computing on society. Not intended as preparation for Computer Science 250 or 270. 6 units.

CMSC 110
Introduction to Scientific Programming

An introduction to computer programming with an emphasis on numerical applications in mathematics and the sciences. Topics include elementary programming concepts in the C language, design and implementation of numerical algorithms, and an introduction to symbolic computation. 6 units. Prerequisite: One term of calculus (either MATH 140 or MATH 120) or consent of instructor

CMSC 150
Introduction to Computer Science

An introduction to computer programming for potential mathematics/computer science majors and other students with a strong interest in computing. Topics include elementary programming constructs, design and implementation of algorithms, and object-oriented programming. Introductory instruction in the Java language. 6 units.

CMSC 250
Intermediate Programming Concepts

A study of more advanced programming techniques in the Java language, with emphasis on skills required for implementation of larger software projects. Topics include graphical user interfaces, exception-handling, multithreading, I/O streams, networking, and event-driven programming. 6 units. Prerequisite: CMSC 150

CMSC 270
Introduction to Data Structures

A study of advanced programming and an introduction to data structures. Topics focus on programming skills needed for the design and implementation of standard data structures such as lists, trees, and graphs and their associated algorithms. Additional topics include recursion, analysis of algorithms, and advanced aspects of object-oriented programming in the C++ language. 6 units. Prerequisite: CMSC 150

CMSC 410
Systems Analysis and Design

An introduction to techniques for analyzing and modeling systems for implementation as computer programs. Topics include a survey of modeling methodologies for structured and object-oriented systems and case studies of system development. Also, applications of analysis and design methods to database design and design of distributed systems. 6 units. Prerequisite: CMSC 250

CMSC 420
Computer Graphics

The fundamentals of computer graphics and their applications in visualizing a variety of scientific phenomena. Topics include graphics primitives, two- and three-dimensional transformations, three-dimensional viewing techniques, spline curves, surface patches, hidden line algorithms, ray tracing, radiosity, texture-mapping, and fractals. 6 units. Prerequisite: MATH 140 and CMSC 270

CMSC 430
Hardware Organization

The structure and function of computers from a perspective midway between that of the electronic circuit designer (see Physics 220) and that of the assembly language programmer (see Computer Science 440). Topics include elementary digital logic, data storage devices, data flow pathways, and examples of central processor organization that illustrate micro-programming, pipelining, parallelism, and reduced instruction sets. 6 units. Prerequisite: CMSC 270 or consent of instructor; PHYS 120 or 150 recommended

CMSC 440
Computer Architecture

A study of computers and their system software at the level of abstraction of an architecture defined by an assembly language. Topics include instruction sets, addressing techniques, and program control mechanisms; subroutines, procedures, and macros; representation and manipulation of numeric and string data; assemblers, linkers, run-time libraries, and debugging aids. 6 units. Prerequisite: CMSC 270 or consent of instructor;MATH 220 recommended

CMSC 450
Operating Systems

The basic principles of operating systems: implementation of multitasking systems; control and coordination of concurrent tasks, deadlocks, synchronization, mutual exclusion; storage management, segmentation, paging, virtual memory, protection, sharing, access control, file systems; resource management; evaluation and prediction of performance by both theoretical and experimental means. 6 units. Prerequisite: CMSC 270 or consent of instructor

CMSC 460
Programming Languages

Current algorithmic paradigms, their implementation in programming languages, and the translation of such languages into machine operations. Topics include object-oriented programming, functional programming, logic programming, parsing theory, and the implementation of programming language constructs in terms of fundamental machine operations. 6 units. Prerequisite: CMSC 270

CMSC 470
Artificial Intelligence

Principles and programming techniques of artificial intelligence using the LISP language. Topics include computational methods and models of search, game playing, theorem proving, heuristics as a means of improving problem-solving, and adaptive systems. 6 units. Prerequisite: CMSC 460

CMSC 510
Data Structures and Algorithm Analysis

Advanced data structures and the time and space efficiency of the algorithms that manipulate such structures. Topics include string search algorithms, sparse matrices, union-find problems, recursion, internal and external sorting, optimized tree structures, graphs, networks, path-finding algorithms, hashing, memory-management techniques, and parallelism. 6 units. Prerequisite: CMSC 270 and MATH 220

CMSC 515
Theory of Computation

A study of programming in the abstract, leading to an understanding of the precise nature and limitations of computing machines. Topics include universal computing machines such as Turing machines, decidable and undecidable predicates, regular and pushdown automata, and regular and context-free grammars. 6 units. Also listed as Mathematics 515. Prerequisite: MATH 300 and CMSC 150

CMSC 550
Advanced Topics in Computing

An exploration of selected advanced computing techniques such as constraint logic, continuation-passing, production systems, declarative knowledge representations, macros, scripting, robot programming, and lazy evaluation, to name a few. The choice of topics for any given term will vary according to the interest of the students and faculty. 6 units. Prerequisite: CMSC 270

CMSC 600
Computer Science Senior Seminar

Intended as a capstone experience for math-computer science majors, this course will provide a forum for seniors to present the results of their required independent research projects. Other class meetings will consist of instructor talks, guest lectures, and discussions of readings of particular relevance to graduating computer scientists. 3 units.

CMSC 190, 390, 590, 690
Tutorial Studies in Computer Science

Variable units. Prerequisite: Counter registration required

CMSC 199, 399, 599, 699
Independent Study in Computer Science

Variable units. Prerequisite: Counter registration required


Recent tutorial topics in computer science
Distributed Databases
Robotics
Parallel Algorithms
Compiler Design
Advanced Rendering Techniques