Please note: The course descriptions displayed here are current as of Tuesday, September 1, 2015, but the official Course Catalog should be used for all official planning.

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 106
Web Client Programming

An introduction to some of the technologies underlying the world wide web, with emphasis on client-side programming. Topics covered include introductions to HTML, CSS, and JavaScript. This course is suitable for students with no prior experience in programming. Units: 6.

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 210
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 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.

Facebook Twitter Instagram YouTube