Course Number | Course Name | Math or Programming? | Languages | Overview | Recommended Pairings | Distributive Area | Exam or Project Based |
---|---|---|---|---|---|---|---|
CMSC320 | Introduction to Data Science | Programming | Python | This course focuses on (i) data management systems, (i) exploratory and statistical data analysis, (ii) data and information visualization, and (iv) the presentation and communication of analysis results. It will be centered around case studies drawing extensively from applications, and will yield a publicly-available final project that will strengthen course participants' data science portfolios. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | Elective | Project |
CMSC335 | Web Application Development with JavaScript | Programming | JavaScript | Introduction to modern ways of developing web applications/services using JavaScript for both front-end and back-end. Topics include fundamental JavaScript languages and constructs, server-side Javacript, back-end data persistence, and client-side JavaScript to build web applications that interact with web services and back-end databases. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | Elective | Projcect |
CMSC411 | Computer Systems Archetecture | Neither, theory based | MIPS computing language, C, Ruby | Study topics in computer systems architecture. Start with pipelining, instruction set principles, and memory hierarchy. Then, shift to super-scalar execution, branch prediction, dynamic scheduling, hardware multi-threading, shared memory architecture, and GPU. | All | 1 | Both |
CMSC412 | Operating Systems | Programming | C | Study processes, threads, scheduling, synchronization, memory management, file system interface and implementation, disk and storage systems, and other topics (security, networking, etc.). Very rigorous, the only upper level course for 4 credits. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC474, CMSC460, CMSC466 | 1 | Project |
CMSC414 | Computer and Network Security | Programming | C, Javascript/SQL | Introduction to computer system and network security. Work on network-related security problems in computer systems. Fundamentals of unmber theory, authentication, and encryption technologies through practical problems. | CMSC456 | 1 | Project |
CMSC416 | Introduction to Parallel Computing | Programming | C, C+, Fortran, MPE | Introduction to parallel computing for computer science majors. Topics include programming for shared memory and distributed memory parallel architectures, and fundamental issues in design, development and analysis of parallel programs. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC474, CMSC460, CMSC466 | 1 | Project |
CMSC417 | Computer Networks | Programming | C, possibly Ruby | Introduction to the core concepts of wired and wireless networking, focused on layered architecture and protocol stacks. Covered concepts include internet architecture, HTTP, DNS, P2P, Sockets, and more. Quite rigorous. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | 1 | Both, with emphasis on projects |
CMSC420 | Data Structures | Programming | Java | Description, properties, and storage allocation functions of data structures including heaps, balanced binary trees, B-Trees, hash tables, skiplists, tries, kd-trees, quadtrees and many more. Algorithms for manipulating structures. | All | 2 | Mix of both |
CMSC421 | Introduction to Artificial Intelligence | Programming | Python | Introduction to AI, inclding search, inference, knowledge representation, learning, vision, natural languages, expert systems, and robotics, Implemantation and application of programming languages, programming techniques, and control structures. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | 2 | Project |
CMSC422 | Machine Learning | Both | Python | Machine Learning studies representations and algorithms that allow machines to improve their performance on a task from experience. This is a broad overview of existing methods for machine learning and an introduction to adaptive systems in general. Emphasis is given to practical aspects of machine learning and data mining. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | 2 | Both, with emphasis on projects |
CMSC423 | Bioinformatic Algorithms, Databases, and Tools | Programming | Some student choice with languages used | This course will focus on algorithmic, and computational aspects of biological data analysis, and specifically on genomics. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | 2 | Project |
CMSC424 | Database Design | Programming | Python, SQL, Ruby-on-Rails | Introduction to database systems and the database approach as a mechanism formodeling the real world. In-depth coverage of the relational model, logical database design, query optimization, concurrency control, transaction management, and log based crash recovery. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | 2 | Project |
CMSC425 | Game Programming | Programming | Unity/C# | An introduction to the principles and practice of computer game programming and design. This includes an introduction to game hardware and systems, the principles of game design, object and terrain modeling, game physics, artificial intelligence for games, networking for games, rendering and animation, and aural rendering. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | Elective | Projcect |
CMSC426 | Computer Vision | Programming | MATLAB | Introduction to basic concepts and techniques in computer vision, including low-level operations like image feltering, edge detection, 3D reconstruction of scenes using stero and structure from motion, and object recognition/detection/classification. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | 2 | Project |
CMSC427 | Computer Graphics | Programming | Java, OpenGL | Introduction to 3D computer graphics, focusing on the underlying building blocks and algorithms. Topics include 3D image generation and modeling, interactive applications, representation of 3D geometry, 3D transformations, pojections, rasterization, texturing, lighting models, and Graphics Processing Units. | All | 2 | Project |
CMSC430 | Introduction to Compilers | Programming | OCaml | Topics include lexical analysis, parsing, intermediate representations, program analysis, optimization, and code generation. If you enjoyed CMSC330, you will likely enjoy this class. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | 3 | Project |
CMSC433 | Programming Language Technologies and Paradigms | Programming | Java | Topics include programming language techologies, their implcations, and their use in software design and implementation. This course often envolves significant group work. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | 3 | Project |
CMSC434 | Introduction to Human-Computer Interaction | Programming and Writing | Java, HTML5, Javascript, C#, Objective C, Swift | Access usability by quantitiative and qualitative methods, Conduct task analysis, usability tests, expert reviews, and continuing assesments of working products. Apply design processes and guidelines. Build low-fidelity paper mockups and a high-fidelity prototype. This course is especially recommended for students with an interest in 3D printing, arduino, and/or accessibility software. | All | 3 | Project, emphasis on writing |
CMSC435 | Software Engineering | Programming | Topics include state-of-the-art techniques in software design and development. Lab experience in applying the techniques covered. Students will use structured design, structured programming, top-down deisgn and development, segmentation and modularization techniques, iterative enhancement, design and code inspection techniques, correctness, and chief-programmer teams. This is considered a capstone course. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | 3 | Project | |
CMSC436 | Programming Handheld Systems | Programming | Kotlin, Swift, Java | Fundamental principles and concepts that underlie the programming of handheld systems, such as mobile phones, personal digital assistants, and tablet computers. Particular emphasis will be placed on concepts such as limited display size, power, memory and CPU speed; and new input modalities, where handheld systems differ substantially from non-handheld systems, and thus require special programming tools and approaches. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | 3 | Project |
CMSC451 | Design and Analysis of Computer Algorithms | Math | MATLAB | Fundamental techniques for designing efficient computer algorithms, proving their correctness, and analyzing their complexity. General topics include sorting, selection, graph algorithms, and basic algorithm design paradigms (such as divide-and-conquer, dynamic programming and greedy algorithms), lower bounds and NP-completeness. If you enjoyed CMSC351, you will likely enjoy this class. | CMSC411, CMSC412, CMSC414, CMSC416, CMSC417, CMSC420, CMSC421, CMSC422, CMSC423, CMSC424, CMSC426, CMSC427, CMSC470, CMSC471, CMSC420, CMSC433, CMSC434, CMSC435, CMSC436, CMSC471 | 4 | Exam |
CMSC452 | Elementary Theory of Computation | Math | MATLAB | Techniques are developed to determine the difficulty of a problem relative to a model of computation. Topics include Finite Automata, P, NP, decidability, undecidability, and communication complexity. | CMSC411, CMSC412, CMSC414, CMSC416, CMSC417, CMSC420, CMSC421, CMSC422, CMSC423, CMSC424, CMSC426, CMSC427, CMSC470, CMSC471, CMSC420, CMSC433, CMSC434, CMSC435, CMSC436, CMSC471 | 4 | Exam |
CMSC454 | Algorithms for Data Science | Math | MATLAB | Topics include fundamental methods for processing a high volume of data. Methods include stream processing, locally sensitive hashing, web search methods, page rank computation, network and link analysis, dynamic graph algorithms, and methods to handle high dimensional data/dimensionality reduction. | CMSC411, CMSC412, CMSC414, CMSC416, CMSC417, CMSC420, CMSC421, CMSC422, CMSC423, CMSC424, CMSC426, CMSC427, CMSC470, CMSC471, CMSC420, CMSC433, CMSC434, CMSC435, CMSC436, CMSC471 | 4 | Exam |
CMSC456 | Cryptology | Math | MATLAB | The theory, application, and implementation of mathematical techniques used to secure modern communications. Topics include symmetric and public-key encryption, message integrity, hash functions, block-cipher design and analysis, number theory, and digital signatures. |
CMSC411, CMSC412, CMSC414, CMSC416, CMSC417, CMSC420, CMSC421, CMSC422, CMSC423, CMSC424, CMSC426, CMSC427, CMSC470, CMSC471, CMSC420, CMSC433, CMSC434, CMSC435, CMSC436, CMSC471 | 4 | Exam |
CMSC457 | Intro to Quantum Computing | Math | MATLAB | The theory, application, and implementation of mathematical techniques used to secure modern communications. Topics include symmetric and public-key encryption, message integrity, hash functions, block-cipher design and analysis, number theory, and digital signatures. |
CMSC411, CMSC412, CMSC414, CMSC416, CMSC417, CMSC420, CMSC421, CMSC422, CMSC423, CMSC424, CMSC426, CMSC427, CMSC470, CMSC471, CMSC420, CMSC433, CMSC434, CMSC435, CMSC436, CMSC471 | 4 | Exam |
CMSC460 | Computational Methods | Math | MATLAB | Basic computational methods for interpolation, least squares, approximation, numerical quadrature, numerical solution of polynomial and transcendental equations, systems of linear equations and initial value problems for ordinary differential equations. Emphasis on methods and their computational properties rather than their analytic aspects. Intended primarily for students in the physical and engineering sciences. | CMSC411, CMSC412, CMSC414, CMSC416, CMSC417, CMSC420, CMSC421, CMSC422, CMSC423, CMSC424, CMSC426, CMSC427, CMSC470, CMSC471, CMSC420, CMSC433, CMSC434, CMSC435, CMSC436, CMSC471 | 5 | Exam |
CMSC466 | Introduction to Numerical Analysis | Math | MATLAB | Floating point computations, direct methods for linear systems, interpolation, solution of nonlinear equations. | CMSC411, CMSC412, CMSC414, CMSC416, CMSC417, CMSC420, CMSC421, CMSC422, CMSC423, CMSC424, CMSC426, CMSC427, CMSC470, CMSC471, CMSC420, CMSC433, CMSC434, CMSC435, CMSC436, CMSC471 | 5 | Exam |
CMSC471 | Introduction to Data Visualization | Programming | JavaScript | Topics include the techniaues and algorithms used for creating effective data visualizations ased on principles from graphic design, perceptual psychology, and cognitive science. Design and build interactive visualizations for the web using the Data-Drive Documents framework. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | 2 or 3 | Project |
CMSC472 | Introduction to Deep Learning | Programming | Python | This course is an elementary introduction to a machine learning technique called deep learning, as well as its applications to a variety of domains. Along the way, the course also provides an intuitive introduction to machine learning such as simple models, learning paradigms, optimization, overfitting, importance of data, training caveats, etc. The assignments explore key concepts and simple applications, and the final project allows an in-depth exploration of a particular application area. | CMSC411, CMSC451, CMSC452, CMSC454, CMSC456, CMSC457, CMSC474, CMSC460, CMSC466 | Elective | Project |
CMSC473 | Capstone in Machine Learning | Programming | Some Flexibility | Semester-long project course in which each student will identify and carry out a project related to machine learning, with the goal of publishing a research paper or software tool. Students will be paired with project advisors the UMD faculty or the industry. | All | Elective | Project |
CMSC474 | Introduction to Computational Game Theory | Math | MATLAB | Game theory deals with interactions among agents (either human or computerized) whose objectives and preferences may differ from the objectives and preferences of other agents. This course will provide a comprehensive introduction to game theory, concentrating on its computatonal aspects. | CMSC411, CMSC412, CMSC414, CMSC416, CMSC417, CMSC420, CMSC421, CMSC422, CMSC423, CMSC424, CMSC426, CMSC427, CMSC470, CMSC471, CMSC420, CMSC433, CMSC434, CMSC435, CMSC436, CMSC471 | 4 | Exam |
CMSC475 | Combinatorics and Graph Theory | Math | MATLAB | General enumeration methods, difference equations, generating functions. Elements of graph theory, matrix representations of graphs, applications of graph theory to transport networks, matching theory and graphical algorithms. | CMSC411, CMSC412, CMSC414, CMSC416, CMSC417, CMSC420, CMSC421, CMSC422, CMSC423, CMSC424, CMSC426, CMSC427, CMSC470, CMSC471, CMSC420, CMSC433, CMSC434, CMSC435, CMSC436, CMSC471 | Elective | Exam |
Showing 1 to 32 of 32 entries