Department: Computer Science

CodeNameDescription
CMSC 101Minds and MachinesFormal 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 105Elementary ProgrammingSolving 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 150Introduction to ComputingTechniques 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 195Selected TopicsSpecial topics satisfying neither major nor minor requirements.
CMSC 221Data StructuresIntroduction 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 222Discrete Structures for Computing with LabSets, 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 240Software Systems DevelopmentIntroduction 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 288Computer Science ApprenticeshipParticipation 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 301Computer Systems and Architecture IFundamentals 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 315Algorithms with LabDesign, 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 321Operating SystemsStructure of operating systems, process management, memory management, file systems, and case studies. Three lecture and one laboratory hour per week.
CMSC 322Software Engineering PracticumProject-oriented course. Principles of software engineering will be emphasized throughout. Three lecture and one laboratory hour per week.
CMSC 323Design and Implementation of Programming LanguagesConcepts 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 325Database SystemsIntroduction 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 326SimulationIntroduction 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 327Machine LearningThe 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 328Numerical AnalysisAnalysis 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 330Theory of ComputationFinite 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 331Introduction to Compiler ConstructionRegular 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 332Computer NetworksPrinciples 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 333Parallel ProgrammingPrinciples 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 334Computer SecurityTheory, 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 335Computer GraphicsDevice 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 340Directed Independent StudyTo enable well-qualified students who have completed basic requirements for major to work independently in areas not included in curriculum.
CMSC 388Individual InternshipNo 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 395Special TopicsSelected topics in Computer Science
CMSC 406Summer Undergraduate ResearchDocumentation 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...