CMSC 101
|
Minds and Machines
|
Formal deduction in propositional logic. The fundamentals of computer architecture. An elementary exploration of the extent to which symbolic reasoning can be automated, including a consideration of related results in fields such as neuroscience and...
|
CMSC 105
|
Elementary Programming
|
Solving problems by writing computer programs. Introduction to computer architecture. Emphasis on symbolic reasoning using examples from a particular computing context. For non-majors. Not open to students who have completed any computer science cour...
|
CMSC 150
|
Introduction to Computing
|
Techniques for writing computer programs to solve problems. Topics include elementary computer organization, object-oriented programming, control structures, arrays, methods and parameter passing, recursion, searching, sorting, and file I/O. Three le...
|
CMSC 195
|
Selected Topics
|
Special topics satisfying neither major nor minor requirements.
|
CMSC 221
|
Data Structures
|
Introduction to data structures, including stacks, queues, linked lists, and binary trees. Topics include abstraction, object-oriented programming, recursion, and computational complexity. Three lecture and two laboratory hours per week.
|
CMSC 222
|
Discrete Structures for Computing with Lab
|
Sets, functions, elementary propositional and predicate logic, elementary graph theory, recurrence relations, proof techniques (including mathematical induction and proof by contradiction), combinatorics, probability, and random numbers, with applica...
|
CMSC 240
|
Software Systems Development
|
Introduction to techniques necessary for development of large-scale software systems. Topics include the development life cycle; design considerations including OOP, patterns, reuse, and usability; repository management; testing, debugging, and stati...
|
CMSC 288
|
Computer Science Apprenticeship
|
Participation in development of software, with supervision of computer science faculty. Does not count for computer science major or minor. No more than a total of 1.5 units of Computer Science 288 may count toward the total number of units required...
|
CMSC 301
|
Computer Systems and Architecture I
|
Fundamentals of computer organization. Topics include instruction and, data representations, assembly language, processor data path design, memory systems and I/O. Also includes examination of how software characteristics impact hardware design and o...
|
CMSC 315
|
Algorithms with Lab
|
Design, analysis, and implementation of advanced computer algorithms. Emphasis is given to problem-solving techniques, including the greedy method, divide-and-conquer, and dynamic programming. Specific problem domains vary. Topics may include sorting...
|
CMSC 321
|
Operating Systems
|
Structure of operating systems, process management, memory management, file systems, and case studies. Three lecture and one laboratory hour per week.
|
CMSC 322
|
Software Engineering Practicum
|
Project-oriented course. Principles of software engineering will be emphasized throughout. Three lecture and one laboratory hour per week.
|
CMSC 323
|
Design and Implementation of Programming Languages
|
Concepts in design and implementation of programming languages, including compile-time and run-time issues. Support for block-structured procedural languages, object-oriented languages, and functional languages. Three lecture and one laboratory hour...
|
CMSC 325
|
Database Systems
|
Introduction to systematic management of data: design and implementation of relational databases, data modeling, normalization, indexing, relational algebra, query processing, and transaction management. Programming projects include substantial use o...
|
CMSC 326
|
Simulation
|
Introduction to simulation. Discrete-event simulation, Monte Carlo simulation, simulation of queuing and inventory systems, random number generation, discrete and continuous stochastic models, elementary statistics, point and interval parameter estim...
|
CMSC 327
|
Machine Learning
|
The mathematics and computer programming underlying practical ma- chine learning applications, and how to construct and evaluate the quality of such systems. Linear and logistic regression, artificial neural networks, support vector machines, K-means...
|
CMSC 328
|
Numerical Analysis
|
Analysis and implementation of algorithms used in applied mathematics, including root finding, interpolation, approximation of functions, integration, solutions to systems of linear equations. Computer error.
|
CMSC 330
|
Theory of Computation
|
Finite state machines, regular languages, push-down automata, and context-free languages. Turing machines, recursive functions, and related topics. Three lecture and one laboratory hour per week.
|
CMSC 331
|
Introduction to Compiler Construction
|
Regular languages, context-free languages, finite automata, push-down automata, lexical analysis, parsing, intermediate representation, and code generation. Three lecture and one laboratory hour per week.
|
CMSC 332
|
Computer Networks
|
Principles and techniques for data communication between computers. Topics include design and analysis of communication protocols, routing, congestion control, network-centric applications, and recent advances. Three lecture and one laboratory hour p...
|
CMSC 333
|
Parallel Programming
|
Principles and techniques for programming computers that have multiple processors. Writing programs for parallel computers that enhance run-time efficiency, portability, correctness, and software modifiability. Three lecture and one laboratory hour p...
|
CMSC 334
|
Computer Security
|
Theory, mechanisms, and implementation of computer security and data protection. Topics include encryption and authentication, program and language security, operating system security, and network security. Three lecture and one laboratory hour per w...
|
CMSC 335
|
Computer Graphics
|
Device independent two- and three-dimensional computer graphics, interactive graphics, user interfaces, and human factors. Consideration of advanced modeling and rendering. Three lecture and one laboratory hour per week.
|
CMSC 340
|
Directed Independent Study
|
To enable well-qualified students who have completed basic requirements for major to work independently in areas not included in curriculum.
|
CMSC 388
|
Individual Internship
|
No more than 1.5 units of internship in any one department and 3.5 units of internship overall may be counted toward required degree units.
|
CMSC 395
|
Special Topics
|
Selected topics in Computer Science
|
CMSC 406
|
Summer Undergraduate Research
|
Documentation of the work of students who receive summer fellowships to conduct research [or produce a creative arts project] in the summer. The work must take place over a minimum of 6 weeks, the student must engage in the project full-time (at leas...
|