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 140: Introduction to Programming with Python
An introduction to computer programming for non-majors or other students interested in building basic programming skills. Topics include basic programming constructs such as decision statements, iteration, and functions. Students will complete a number of programming assignments over the course of the term, culminating in a final project. Instruction in the Python language.
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.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
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.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor
CMSC 205: Data-Scientific Programming
An introduction to programming with emphasis on learning from data in order to gain useful insights. Topics focus on elementary programming concepts in the R language and the necessary tools to handle, analyze and interpret data. This course will be taught in a workshop format, and students will complete regular assignments and a final project that provide hands-on programming/analysis experiences.
PREREQUISITES: One prior course MATH, STAT, or CMSC course, or BIOL 170, or BIOL 280, or consent of instructor
Units: 6
Also listed as Statistics 205
Prerequisite: One prior course MATH, STAT, or CMSC course, or BIOL 170, or BIOL 280, or consent of instructor
CMSC 208: Statistical Machine Learning
An overview of techniques used to discover structural patterns and make predictions using complex datasets that are prevalent in today's world. The central machine learning tasks of classification, clustering, and regression will be explored, along with methods for training models and evaluating predictions. This course will be taught in a workshop format. Assignments will involve the use of statistical software.
PREREQUISITES: CMSC 150, or CMSC 205, or CMSC 210, or consent of instructor
Units: 6
Also listed as Linguistics 208, Statistics 208
Prerequisite: CMSC 150, or CMSC 205, or CMSC 210, or consent of instructor
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 Python language, design and implementation of numerical algorithms, and an introduction to symbolic computation.
PREREQUISITES: One term of calculus (either MATH 140 or MATH 120), or consent of instructor
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.
PREREQUISITES: MATH 140 and C- or better in CMSC 150
Units: 6
Prerequisite: MATH 140 and C- or better in 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.
PREREQUISITES: C- or better in CMSC 250
Units: 6
Prerequisite: C- or better in CMSC 250
CMSC 390: Tutorial Studies in Computer Science
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
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.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
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.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor
CMSC 399: Independent Study in Computer Science
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
CMSC 405: Advanced Data Computing
This course builds on CMSC/STAT 205, providing a deeper exploration of statistical computing in R. Topics might include efficient programming techniques, parallelization, statistical algorithms, advanced data visualization, and creation of R packages. Statistical software will be used extensively in this course. The class will be taught in an interactive lab-based format. There will be regular assignments and a project.
PREREQUISITES: CMSC 205
Units: 6
Also listed as Statistics 405
Prerequisite: CMSC 205
CMSC 406: Web Development
Introduction to client side and server side web development with HTML, CSS, and JavaScript. Topics covered include the use of client side and server side JavaScript frameworks. Students will complete a number of small projects over the course of the term.
PREREQUISITES: CMSC 270
Units: 6
Prerequisite: CMSC 270
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.
PREREQUISITES: CMSC 250
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.
PREREQUISITES: MATH 155 and CMSC 270
Units: 6
Prerequisite: MATH 155 and CMSC 270
CMSC 435: Computer Organization & Architecture
The structure and function of computers as viewed from the hardware/software 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 manipulation, instruction sets, addressing techniques, and program control mechanisms.
PREREQUISITES: CMSC 250 and CMSC 270
Units: 6
Prerequisite: CMSC 250 and CMSC 270
CMSC 445: Mobile Application Development
Introduction to mobile application development with modern application development frameworks. Frameworks
covered may include Swift/iOS, Kotlin/Android or other similar frameworks. Topics covered will include user
interfaces for mobile applications and the use of back end services. Students will complete a series of app
development projects over the course of the term.
PREREQUISITES: CMSC 270
Units: 6
Prerequisite: CMSC 270
CMSC 455: Back End Programming
Tools and techniques for constructing server side back end software for modern web and mobile applications. Topics covered will include working with both SQL and NoSQL databases and frameworks for constructing back end applications. This course will be structured as a traditional lecture course with regular programming assignments.
PREREQUISITES: CMSC 250
Units: 6
Prerequisite: CMSC 250
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.
PREREQUISITES: CMSC 250 and CMSC 270
Units: 6
Prerequisite: CMSC 250 and 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.
PREREQUISITES: CMSC 250 and CMSC 270
Units: 6
Prerequisite: CMSC 250 and 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.
PREREQUISITES: CMSC 270
Units: 6
Prerequisite: CMSC 270
CMSC 490: Neural Networks
A survey of modern applications for neural networks and programming toolkits used to implement them. Applications surveyed will include image recognition, natural language processing, and machine learning applications. Students will complete programming projects using modern toolkits for neural network construction. Course is structured as a traditional lecture course with programming assignments.
PREREQUISITES: CMSC 270
Units: 6
Prerequisite: CMSC 270
CMSC 500: Special Topics in Computer Science
An exploration of advanced computing techniques such as artificial life, constraint logic, continuation-passing, lazy evaluation, production systems, and robot programming, to name a few. The choice of topics for any given term will vary according to the interests of the students and faculty.
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.
PREREQUISITES: MATH 230, and C- or better in CMSC 270
Units: 6
Prerequisite: MATH 230, and C- or better in CMSC 270
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.
PREREQUISITES: CMSC 150 and MATH 230
Units: 6
Prerequisite: CMSC 150 and MATH 230
CMSC 590: Tutorial Studies in Computer Science
Advanced study arranged and carried out under the direction of an instructor.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
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.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
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.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor
CMSC 599: Independent Study in Computer Science
Advanced research. Students considering an honors project should register for this course, for one or more terms.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
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
Advanced study arranged and carried out under the direction of an instructor.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
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.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
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.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor
CMSC 698: Computer Science Senior Projects
Designed as an inclusive alternative to separately-scheduled, required independent studies (CMSC 699). Students in the graduating cohort will present proposals, progress reports, and preliminary results of their self-directed senior projects to be evaluated by their peers while learning about each others' capstone projects in computer science.
PREREQUISITES: Instructor Approval required
Units: 6
Prerequisite: Instructor Approval required
CMSC 699: Independent Study in Computer Science
Advanced research. Students considering an honors project should register for this course, for one or more terms.
PREREQUISITES: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.
Units: 1 TO 98
Prerequisite: To register student must complete the Student Initiated Course Form with consultation of supervising instructor.