Classes in CMSC
| CMSC102 | Introduction to Information Technology (3 credits) | ||||||||||
| For non-majors only. Not recommended for BMGT students. Not open to students who have completed CMSC106, CMSC114, CMSC132 or CMSC214. Credit will be granted for only one of the following: CMSC102, CMSC132 or CMSC214. If CMSC102 is taken before CMSC132 or CMSC214, then credit will be granted for both. An introduction to computer terminology and concepts of computing and information technology. Hands-on experience with a variety of tools available to access the Internet, to find information, as well as PC applications such as a word processor and a spreadsheet package. Students will work in multiple environments (for example, both Windows and UNIX). | |||||||||||
| |||||||||||
| CMSC122 | Introduction to Computer Programming via the Web (3 credits) | ||||||||||
| Not open to students who have completed CMSC132 or higher. Credit will be granted for only one of the following: CMSC122 or CMSC198N. Formerly CMSC198N. Introduction to computer programming in the context of developing full featured dynamic web sites. Emphasizes skills such as program design/implementation using JavaScript and essential knowledge of HTML/CSS for dynamic web sites. | |||||||||||
| |||||||||||
| CMSC131 | (PermReq)Object-Oriented Programming I (4 credits) | ||||||||||
| Corequisite: MATH140 and permission of department. Not open to students who have completed CMSC114. Introduction to programming and computer science. Emphasizes understanding and implementation of applications using object-oriented techniques. Develops skills such as program design and testing as well as implementation of programs using a graphical IDE. Programming done in Java. For CMSC majors only. | |||||||||||
| |||||||||||
| CMSC132 | (PermReq)Object-Oriented Programming II (4 credits) | ||||||||||
| Prerequisite: CMSC131 with a grade of C or better; or a score of 5 on the A Java AP exam; or a score of 4 or 5 on the AB Java AP exam; or permission of the department based on satisfactory performance on the department placement exam and permission of department. Corequisite: MATH141. Introduction to use of computers to solve problems using software engineering principles. Design, build, test, and debug medium -size software systems and learn to use relevant tools. Use object-oriented methods to create effective and efficient problem solutions. Use and implement application programming interfaces (APIs). Programming done in Java. | |||||||||||
| |||||||||||
| CMSC132H | (PermReq)Object-Oriented Programming II (4 credits) | ||||||||||
| Prerequisite: CMSC131 with a grade of C or better; or a score of 5 on the A Java AP exam; or a score of 4 or 5 on the AB Java AP exam; or permission of the department based on satisfactory performance on the department placement exam and permission of department. Corequisite: MATH141. For general honors students only. | |||||||||||
| |||||||||||
| CMSC198I | The Science Behind Computing: What Makes Web Search, Navigation Systems and Social Media Work? (3 credits) | ||||||||||
One of the "I" Courses for Spring 2011: Issues-Inspiration-Imagination; http://www.iseries.umd.edu/ Click here for more course information. | |||||||||||
| |||||||||||
| CMSC216 | (PermReq)Introduction to Computer Systems (4 credits) | ||||||||||
| Prerequisite: CMSC131, CMSC132, MATH140, and MATH141. Corequisite: CMSC250. Not open to students who have completed CMSC216. Credit will be granted for only one of the following: CMSC212 or (CMSC213 and CMSC313) or CMSC216. Machine representation of data including intergers and floating point. Modern computer architectural features and their interaction with software (registers, caches). Interaction between user programs and the OS: system class, process, and thread management. Optimizing software to improve runtime performance using both compilers and hand turning. | |||||||||||
| |||||||||||
| CMSC250 | (PermReq)Discrete Structures (4 credits) | ||||||||||
| Prerequisite: CMSC131 with a grade of C or better; MATH141; and permission of department. Formerly CMSC 150. Fundamental mathematical concepts related to computer science, including finite and infinite sets, relations, functions, and propositional logic. Introduction to other techniques, modeling and solving problems in computer science. Introduction to permutations, combinations, graphs, and trees with selected applications. | |||||||||||
| |||||||||||
| CMSC250H | Discrete Structures (4 credits) | ||||||||||
| Prerequisite: CMSC131 with a grade of C or better; MATH141; and permission of department. Formerly CMSC 150. | |||||||||||
| |||||||||||
| CMSC330 | (PermReq)Organization of Programming Languages (3 credits) | ||||||||||
| Prerequisite: CMSC212 and CMSC250: each with a grade of C (2.0) or better; and permission of department. The semantics of programming languages and their run-time organization. Several different models of languages are discussed, including procedural (e.g., C, Pascal), functional (e.g., ML, LISP), rule-based (e.g., Prolog), and object-oriented (e.g., C++, Smalltalk). Run-time structures, including dynamic versus static scope rules, storage for strings, arrays, records, and object inheritance are explored. | |||||||||||
| |||||||||||
| CMSC351 | (PermReq)Algorithms (3 credits) | ||||||||||
| Prerequisite: CMSC212 and CMSC250: each with a grade of C (2.0) or better; and permission of department. CMSC351 may not count as one of the required upper level CMSC courses for students who are required to have 24 upper level CMSC credits for graduation, i.e. for students who became computer science majors prior to Fall, 2002. Credit will be granted for only one of the following: CMSC251 or CMSC351. Formerly CMSC 251. A systematic study of the complexity of some elementary algorithms related to sorting, graphs and trees, and combinatorics. Algorithms are analyzed using mathematical techniques to solve recurrences and summations. | |||||||||||
| |||||||||||
| CMSC411 | Computer Systems Architecture (3 credits) | ||||||||||
| Prerequisite: A grade of C or better in (CMSC311 or ENEE350) and a grade of C or better in CMSC330; and permission of department; or CMSC graduate student. Input/output processors and techniques. Intra-system communication, buses, caches. Addressing and memory hierarchies. Microprogramming, parallelism, and pipelining. | |||||||||||
| |||||||||||
| CMSC412 | Operating Systems (4 credits) | ||||||||||
| Prerequisites: A grade of C or better in (CMSC311 or ENEE350) and a grade of C or better in CMSC330; and permission of department; or CMSC graduate student. An introduction to batch systems, spooling systems, and third-generation multiprogramming systems. Description of the parts of an operating system in terms of function, structure, and implementation. Basic resource allocation policies. | |||||||||||
| |||||||||||
| CMSC414 | (PermReq)Computer and Network Security (3 credits) | ||||||||||
| Prerequisite: A grade of C or better in (CMSC311 or ENEE350) and a grade of C or better in CMSC330; and permission of department; or CMSC graduate student. An introduction to the topic of security in the context of computer systems and networks. Identify, analyze, and solve network-related security problems in computer systems. Fundamentals of number theory, authentication, and encryption technologies, as well as the practical problems that have to be solved in order to make those technologies workable in a networked environment, particularly in the wide-area Internet environment. | |||||||||||
| |||||||||||
| CMSC417 | Computer Networks (3 credits) | ||||||||||
| Prerequisite: A grade of C or better in CMSC351, a grade of C or better in (CMSC311 or ENEE350), and a grade of C or better in CMSC330; and permission of department; or CMSC graduate student. Computer networks and architectures. The OSI model including discussion and examples of various network layers. A general introduction to existing network protocols. Communication protocol specification, analysis, and testing. | |||||||||||
| |||||||||||
| CMSC420 | Data Structures (3 credits) | ||||||||||
| Prerequisites: A grade of C or better in CMSC330 and in CMSC351; and permission of department; or CMSC graduate student. Description, properties, and storage allocation of data structures including lists and trees. Algorithms for manipulating structures. Applications from areas such as data processing, information retrieval, symbol manipulation, and operating systems. | |||||||||||
| |||||||||||
| CMSC421 | Introduction to Artificial Intelligence (3 credits) | ||||||||||
| Prerequisites: A grade of C or better in CMSC330 and in CMSC351; and permission of the department or CMSC graduate student. Areas and issues in artificial intelligence, including search, inference, knowledge representation, learning, vision, natural languages, expert systems, robotics. Implementation and application of programming languages (e.g. LISP, PROLOG, SMALLTALK), programming techniques (e.g. pattern matching, discrimination networks) and control structures (e.g. agendas, data dependencies). | |||||||||||
| |||||||||||
| CMSC424 | Database Design (3 credits) | ||||||||||
| Prerequisite: CMSC420 with a grade of C or better; and permission of department; or CMSC graduate student. Motivation for the database approach as a mechanism for modeling the real world. Review of the three popular data models: relational, network, and hierarchical. Comparison of permissible structures, integrity constraints, storage strategies, and query facilities. Theory of database design logic. | |||||||||||
| |||||||||||
| CMSC430 | Theory of Language Translation (3 credits) | ||||||||||
| Prerequisites: a grade of C or better in CMSC330; and permission of department; or CMSC graduate student. Formal translation of programming languages, program syntax and semantics. Finite state recognizers and regular grammars. Context-free parsing techniques such as recursive descent, precedence, LL(k) and LR(k). Code generation, improvement, syntax-directed translation schema. | |||||||||||
| |||||||||||
| CMSC433 | Programming Language Technologies and Paradigms (3 credits) | ||||||||||
| Prerequisite: CMSC330; and permission of department; or CMSC graduate student. Programming language technologies (e.g., object-oriented programming), their implementations and use in software design and implementation. | |||||||||||
| |||||||||||
| CMSC434 | Introduction to Human-Computer Interaction (3 credits) | ||||||||||
| Prerequisites: CMSC330 with a grade of C or better and PSYC100; and permission of department; or CMSC graduate student. Assess usability by quantitative and qualitative methods. Conduct task analyses, usability tests, expert reviews, and continuing assessments of working products by interviews, surveys, and logging. Apply design processes and guidelines to develop professional quality user interfaces. Build low-fidelity paper mockups, and a high-fidelity prototype using contemporary tools such as graphic editors and a graphical programming environment (eg: Visual Basic, Java). | |||||||||||
| |||||||||||
| CMSC435 | Software Engineering (3 credits) | ||||||||||
| Prerequisites: (CMSC412, CMSC417, CMSC420, CMSC430, or CMSC433) with a grade of C or better and permission of department; or CMSC graduate student. State-of-the-art techniques in software design and development. Laboratory experience in applying the techniques covered. Structured design, structured programming, top-down design and development, segmentation and modularization techniques, iterative enhancement, design and code inspection techniques, correctness, and chief-programmer teams. The development of a large software project. | |||||||||||
| |||||||||||
| CMSC451 | Design and Analysis of Computer Algorithms (3 credits) | ||||||||||
| Prerequisite: a grade of C or better in CMSC351; and permission of department; or CMSC graduate student. 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. | |||||||||||
| |||||||||||
| CMSC452 | Elementary Theory of Computation (3 credits) | ||||||||||
| Prerequisite: CMSC351 with a grade of C or better; and permission of department; or CMSC graduate student. Alternative theoretical models of computation, types of automata, and their relations to formal grammars and languages. | |||||||||||
| |||||||||||
| CMSC456 | Cryptology (3 credits) | ||||||||||
| Prerequisites: Any two 400-level MATH courses; or CMSC330 and CMSC351; and permission of department; or CMSC graduate student. Also offered as MATH456. Credit will be granted for only one of the following: CMSC456 or MATH456. Importance in protecting data in communications between computers. The subject lies on the border between mathematics and computer science. Mathematical topics include number theory and probability, and computer science topics include complexity theory. | |||||||||||
| |||||||||||
| CMSC460 | Computational Methods (3 credits) | ||||||||||
| Prerequisites: MATH240; and MATH241; and CMSC106 or CMSC114 or ENEE114; and permission of department; or CMSC graduate student. Also offered as AMSC460. Credit will be granted for only one of the following: AMSC/CMSC/MAPL460 or AMSC/CMSC/MAPL466. 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. | |||||||||||
| |||||||||||
| CMSC466 | Introduction to Numerical Analysis I (3 credits) | ||||||||||
| Prerequisites: MATH240; and MATH241; and CMSC106 or CMSC114 or ENEE114; and permission of department; or CMSC graduate student. Also offered as AMSC466. Credit will be granted for only one of the following: AMSC/CMSC/MAPL460 or AMSC/CMSC/MAPL466. Floating point computations, direct methods for linear systems, interpolation, solution of nonlinear equations. | |||||||||||
| |||||||||||
| CMSC475 | Combinatorics and Graph Theory (3 credits) | ||||||||||
| Prerequisites: MATH240 and MATH241; and permission of department; or CMSC graduate student. Also offered as MATH475. 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. | |||||||||||
| |||||||||||
| CMSC630 | Theory of Programming Languages (3 credits) | ||||||||||
| Prerequisite: CMSC 430. Contemporary topics in the theory of programming languages. Formal specification and program correctness. Axiomatic proof systems (both Floyd-Hoare and Dijkstra's predicate transformers), Mills' functional correctness approach, abstract data types (both abstract model and algebraic specifications), and Scott-style denotational semantics based on least fixed points. | |||||||||||
| |||||||||||
| CMSC661 | Scientific Computing II (3 credits) | ||||||||||
| Prerequisite: AMSC/CMSC/MAPL 460, AMSC/CMSC/MAPL 466, or knowledge of basic numerical analysis (linear equations, nonlinear equations, integration, interpolation) with permission of instructor. Knowledge of C or Fortran. Also offered as AMSC 661. Credit will be granted for only one of the following: AMSC, CMSC 661 or MAPL 661. Fourier and wavelet transform methods, numerical methods for elliptic partial differential equations, numerical linear algebra for sparse matrices, Finite element methods, numerical methods for time dependent partial differential equations. Techniques for scientific computation with an introduction to the theory and software for each topic. Course is part of a two course sequence (660 and 661), but can be taken independently. | |||||||||||
| |||||||||||
| CMSC667 | Numerical Analysis II (3 credits) | ||||||||||
| Prerequisite: AMSC/CMSC/MAPL 666. Also offered as AMSC 667. Credit will be granted for only one of the following: AMSC 667, CMSC 667 or MAPL 667. Nonlinear systems of equations, ordinary differential equations, boundary value problems. | |||||||||||
| |||||||||||
| CMSC722 | Artificial Intelligence Planning (3 credits) | ||||||||||
| Prerequisite: CMSC 421 or equivalent; or permission of department. Automated planning of actions to accomplish some desired goals. Basic algorithms, important systems, and new directions in the field of artificial intelligence planning systems. | |||||||||||
| |||||||||||
| CMSC724 | Database Management Systems (3 credits) | ||||||||||
| Prerequisite: CMSC 624 or permission of instructor. Theoretical and implementation issues in advanced database systems. Topics include distributed databases, parallel databases, database client-server architectures, multimedia access methods, advanced query optimization techniques, data semantics and models, object-oriented databases, and deductive and expert database systems. | |||||||||||
| |||||||||||
| CMSC751 | Parallel Algorithms (3 credits) | ||||||||||
| Prerequisite: CMSC 451 or equivalent. A presentation of the theory of parallel computers and parallel processing. Models of parallel processing and the relationships between these models. Techniques for the design and analysis of efficient parallel algorithms including parallel prefix, searching, sorting, graph problems, and algebraic problems. Theoretical limits of parallelism, inherently sequential problems, and the theory of P-completeness. | |||||||||||
| |||||||||||
| CMSC754 | Computational Geometry (3 credits) | ||||||||||
| Prerequisites: {CMSC 420 and CMSC 451} or permission of instructor. Introduction to algorithms and data structures for computational problems in discrete geometry (for points, lines, and polygons) primarily in two and three dimensions. Topics include triangulations and planar subdivisions, geometric search and intersection, convex hulls, Voronoi diagrams, Delaunay triangulations, line arrangements, visibility, and motion planning. | |||||||||||
| |||||||||||
| CMSC773 | Computational Linguistics II (3 credits) | ||||||||||
| Prerequisite: CMSC723 or LING723; or permission of instructor. May only receive PhD Comp. credit for CMSC723 or CMSC823, not both. Also offered as LING773. Not open to students who have completed LING647. Formerly CMSC 828R. Natural language processing with a focus on corpus-based statistical techniques. Topics inlcude: stochastic language modeling, smoothing, noisy channel models, probabilistic grammars and parsing; lexical acquisition, similarity-based methods, word sense disambiguation, statistical methods in NLP applications; system evaluation. | |||||||||||
| |||||||||||



