Subject Course Number Long Course Title Description
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.
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.
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.
CMSC 190 Tutorial Studies in Computer Science  
CMSC 199 Independent Study in Computer Science  
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.
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.
CMSC 390 Tutorial Studies in Computer Science  
CMSC 399 Independent Study in Computer Science  
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
CMSC 590 Tutorial Studies in Computer Science  
CMSC 599 Independent Study in Computer Science  
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.
CMSC 690 Tutorial Studies in Computer Science  
CMSC 699 Independent Study in Computer Science