CMSC 100
Exploring Computer Science
An introduction to the ideas, problems, methods, and solutions of computer science. We will emphasize algorithmic thinking and treat computer science
as a science—investigating issues, at a beginning level, of interest to actual computer scientists. Not intended as preparation for CMSC 250 or 270.
Units: 6.
CMSC 105
WWII Codebreaking
An introduction to general principles of computer science alongside specific encryption algorithms developed throughout history, culminating in a fascinating analysis of the remarkable accomplishments of Alan Turing and the Allied codebreakers of World War II. Students will break classical ciphers and will also experiment with modern techniques that facilitate secure internet transactions.
Units: 6.
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.
Units: 6.
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.
Units: 6.
CMSC 191
Directed Study in Computer Science
Directed study follows a syllabus set primarily by the instructor to meet the needs or interests of an individual student or small group of students. The main goal of directed study is knowledge or skill acquisition, not research or creative work.
Units: 1 TO 98.
Prerequisite: Counter Registration Required.
CMSC 195
Internship In Computer Science
The academic component of the internship includes readings related to the substance of the internship, discussions with the faculty supervisor, and a written report appropriate to the discipline. Course grades are based on this academic work.
Units: 1 TO 98.
Prerequisite: Counter Registration Required
CMSC 250
Intermediate Programming Concepts
A study of more advanced programming techniques in the Java language. Topics include graphical user interfaces, exception-handling, multithreading, networking, databases, and web applications.
Units: 6.
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.
Units: 6.
Prerequisite: CMSC 150
CMSC 390
Tutorial Studies in Computer Science
Units: 1 TO 98.
Prerequisite: Counter Registration Required.
CMSC 391
Directed Study in Computer Science
Directed study follows a syllabus set primarily by the instructor to meet the needs or interests of an individual student or small group of students. The main goal of directed study is knowledge or skill acquisition, not research or creative work.
Units: 1 TO 98.
Prerequisite: Counter Registration Required.
CMSC 395
Internship In Computer Science
The academic component of the internship includes readings related to the substance of the internship, discussions with the faculty supervisor, and a written report appropriate to the discipline. Course grades are based on this academic work.
Units: 1 TO 98.
Prerequisite: Counter Registration Required
CMSC 399
Independent Study in Computer Science
Units: 1 TO 98.
Prerequisite: Counter Registration Required.
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.
Units: 6.
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.
Units: 6.
Prerequisite: MATH 140 and CMSC 270
CMSC 435
Computer Organization & Architecture
The structure and function of computers as viewed from the hardware/sofware interface. Hardware topics include elementary digital logic, data storage devices, dataflow pathways, and central processor organization with special emphasis on parallelism. Corresponding software topics include data representation and maipulation, instruction sets, addressing techniques, and program control mechanisms.
Units: 6.
Prerequisite: CMSC 270 or consent of instructor
CMSC 460
Programming Languages
An examination of issues in the design and implementation of programming languages. Students will first gain proficiency in the functional programming paradigm (using Scheme), and will then design and implement, in Scheme, an interpreter for a brand-new programming language.
Units: 6.
Prerequisite: CMSC 270
CMSC 470
Artificial Intelligence
A detailed investigation into foundational concepts of artificial intelligence: search, knowledge representation, and automated planning. Specific topics include uninformed and heuristic search techniques, logic-based knowledge representations, automated theorem-proving, logic programming (Prolog), action representations, means-ends analysis, regression and partial-order planning, and reachability analysis using graphs.
Units: 6.
Prerequisite: CMSC 270
CMSC 480
Systems Programming
A survey of some fundamental aspects of computer operating systems and their impact on the performance of software. Topics include process and memory management, system level input/output, concurrency, and parallel programming.
Units: 6.
Prerequisite: CMSC 270
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 proof of correctness for algorithms, recursion, dynamic programming, optimized tree structures, union-find problems, graphs, path-finding algorithms, and string search algorithms.
Units: 6.
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.
Units: 6.
Prerequisite: MATH 300 and CMSC 150
CMSC 590
Tutorial Studies in Computer Science
Units: 1 TO 98.
Prerequisite: Counter Registration Required.
CMSC 591
Directed Study in Computer Science
Directed study follows a syllabus set primarily by the instructor to meet the needs or interests of an individual student or small group of students. The main goal of directed study is knowledge or skill acquisition, not research or creative work.
Units: 1 TO 98.
Prerequisite: Counter Registration Required.
CMSC 595
Internship In Computer Science
The academic component of the internship includes readings related to the substance of the internship, discussions with the faculty supervisor, and a written report appropriate to the discipline. Course grades are based on this academic work.
Units: 1 TO 98.
Prerequisite: Counter Registration Required
CMSC 599
Independent Study in Computer Science
Units: 1 TO 98.
Prerequisite: Counter Registration Required.
CMSC 600
Computer Science Senior Seminar
Intended as a capstone experience for math-computer science majors, this course provides a forum for seniors to formally present the results of their required independent study projects. CMSC minors and other students doing senior projects involving computing are also invited to present their work in this seminar.
Units: 3.
CMSC 690
Tutorial Studies in Computer Science
Units: 1 TO 98.
Prerequisite: Counter Registration Required.
CMSC 691
Directed Study in Computer Science
Directed study follows a syllabus set primarily by the instructor to meet the needs or interests of an individual student or small group of students. The main goal of directed study is knowledge or skill acquisition, not research or creative work.
Units: 1 TO 98.
Prerequisite: Counter Registration Required.
CMSC 695
Internship In Computer Science
The academic component of the internship includes readings related to the substance of the internship, discussions with the faculty supervisor, and a written report appropriate to the discipline. Course grades are based on this academic work.
Units: 1 TO 98.
Prerequisite: Counter Registration Required
CMSC 699
Independent Study in Computer Science
Units: 1 TO 98.
Prerequisite: Counter Registration Required.