Courses
Computer science professors balance teaching students the fundamentals of the discipline while at the same time staying on top of a rapidly changing field where the lessons could change day by day and certainly semester by semester. A number of innovative courses have sprung from this challenge including an advanced architecture course that was organized around case studies on processor design. A recent operating systems class put students in groups to install and modify the Linux operating system on Apple’s iPod music player. Students taking a recent data mining course completed final projects that ranged from predicting the calls a football coach would make to improving the prediction algorithm Netflix uses to suggest new movies to customers.
Strong computer science courses emphasize the fundamentals of computing and at the same time, incorporate hands-on work at all levels to illustrate and reinforce the principles in realistic contexts. To this end, most computer science courses contain a lab component. A lab for an introductory course might be a closed laboratory experience with highly structured exercises while a lab for a more advanced course might utilize extended seminar-style meetings or problem-solving sessions. In addition to giving students the chance to practice what they’re learning in the classroom, labs can also help faculty and students develop close working relationships that may ultimately lead to independent research opportunities.
In addition to the listing of courses below, a list of upcoming courses in computer science courses is available.
If you wish to transfer credits from a computer science course taken at another college or university, consult the transfer approval guidelines.
Computer Science
-
CMSC 101 Minds and Machines
Units: 0-1
Fulfills General Education Requirement(s): AI-Symbolic Reasoning (AISR), Symbolic Reasoning (FSSR)
DescriptionFormal 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 artificial intelligence. Three hours lecture and one hour lab per week.
-
CMSC 105 Elementary Programming
Units: 0-1
Fulfills General Education Requirement(s): AI-Symbolic Reasoning (AISR), Symbolic Reasoning (FSSR)
DescriptionNo prior programming experience necessary. 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 course that fulfills major requirements. Three lecture and one laboratory hour per week.
-
CMSC 150 Introduction to Computing with Lab
Units: 0-1
Fulfills General Education Requirement(s): AI-Symbolic Reasoning (AISR), Symbolic Reasoning (FSSR), Linguistics elective (LING), Law/Liberal Arts area 6 (LW6)
DescriptionTechniques 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 lecture and two laboratory hours per week. A student may not receive credit for both Computer Science 150 and 155. Students who have received credit for courses numbered 221 or higher may not take 150 for credit.
-
CMSC 195 Selected Topics
Units: 0.25-1
DescriptionSpecial topics satisfying neither major nor minor requirements.
-
CMSC 221 Data Structures with Lab
Units: 0-1
Fulfills General Education Requirement(s): Symbolic Reasoning (FSSR), Linguistics elective (LING)
DescriptionIntroduction 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.
PrerequisitesCMSC 150 with a minimum grade of C-
-
CMSC 222 Discrete Structures for Computing with Lab
Units: 0-1
DescriptionSets, 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 applications to computing. Three hours lecture and one hour lab per week.
PrerequisitesCMSC 150 with a minimum grade of C-
-
CMSC 240 Software Systems Development
Units: 1
DescriptionIntroduction 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 static/dynamic analysis; and group work. Also includes introduction to Unix/Linux environments, and to the C++ programming language, including classes, inheritance, and polymorphism; pointers and dynamic memory allocation; and the C++ Standard Template Library (STL). Three lecture hours and one laboratory hour per week.
PrerequisitesCMSC 221 with a minimum grade of C-
-
CMSC 288 Computer Science Apprenticeship
Units: 0.25-0.5
DescriptionParticipation 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 for a degree.
-
CMSC 301 Computer Systems and Architecture I
Units: 0-1
DescriptionFundamentals 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 optimization. Three lecture and one laboratory hour per week.
PrerequisitesCMSC 221 and CMSC 240 with a minimum grade of C-. CMSC 240 may be taken concurrently with CMSC 301.
-
CMSC 315 Algorithms with Lab
Units: 0-1
DescriptionDesign, 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, graphs, networks, computational geometry, NP-completeness, approximation algorithms, text processing, distributed systems, and numerical algorithms. Three lecture and one laboratory hour per week.
PrerequisitesCMSC 222 with a minimum grade of C- or MATH 300 with a minimum grade of A- and CMSC 221 with a minimum grade of C-
-
CMSC 321 Operating Systems
Units: 0-1
DescriptionStructure of operating systems, process management, memory management, file systems, and case studies. Three lecture and one laboratory hour per week.
PrerequisitesCMSC 301 with a minimum grade of C-
-
CMSC 322 Software Engineering Practicum
Units: 0-1
DescriptionProject-oriented course. Principles of software engineering will be emphasized throughout. Three lecture and one laboratory hour per week.
PrerequisitesCMSC 301 with a minimum grade of C-
-
CMSC 323 Design and Implementation of Programming Languages
Units: 0-1
DescriptionConcepts 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 per week.
PrerequisitesCMSC 301 with a minimum grade of C-. CMSC 315 is recommended, but not required
-
CMSC 325 Database Systems
Units: 0-1
DescriptionIntroduction 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 of SQL and its extensions. Three lecture and one laboratory hour per week.
PrerequisitesCMSC221 (or MATH 300 (with a minimum grade of A-) and CMSC222 both with a minimum grade of C
-
CMSC 326 Simulation
Units: 0-1
DescriptionIntroduction 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 estimation, and input modeling techniques. Three lecture and one laboratory hour per week.
PrerequisitesCMSC 221 and CMSC 240 with a minimum grade of C-
-
CMSC 327 Machine Learning
Units: 1
Fulfills General Education Requirement(s): IF-Quantitative Data Literacy (IFQD)
DescriptionThe 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 clustering. Other topics within Arti- ficial Intelligence as time permits. Programming projects. Three lecture hours and one laboratory hour per week.
PrerequisitesCMSC 221 and MATH 211 (or MATH 212 or MATH 235) and MATH 245 all with a minimum grade of C-
-
CMSC 328 Numerical Analysis (See Math 328)
Units: 1
Fulfills General Education Requirement(s): MTEC math elective (MTEL)
Description(See Mathematics 328.)
PrerequisitesCMSC 150 and MATH 245 with a minimum grade of C-
-
CMSC 330 Theory of Computation
Units: 0-1
DescriptionFinite 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.
PrerequisitesCMSC 315 with a minimum grade of C-
-
CMSC 331 Introduction to Compiler Construction
Units: 0-1
DescriptionRegular 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.
PrerequisitesCMSC 222 (or MATH 300 with a minimum grade of A-) and CMSC 301 both with a minimum grade of C-
-
CMSC 332 Computer Networks
Units: 0-1
DescriptionPrinciples 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 per week.
PrerequisitesCMSC 301 with a minimum grade of C-
-
CMSC 333 Parallel Programming
Units: 1
DescriptionPrinciples 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 per week.
PrerequisitesCMSC 222 (or MATH 300 with a minimum grade of A-) and CMSC 301 both with a minimum grade of C-
-
CMSC 334 Computer Security
Units: 0-1
DescriptionTheory, 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 week.
PrerequisitesCMSC 301 with a minimum grade of C-
-
CMSC 335 Computer Graphics
Units: 0-1
DescriptionDevice 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.
PrerequisitesCMSC 222 (or MATH 300 with a minimum grade of A-), CMSC 301, and MATH 245 with a minimum grade of C-
-
CMSC 336 Music Informatics
Units: 1
Fulfills General Education Requirement(s): IF-Quantitative Data Literacy (IFQD)
DescriptionThis course explores the interdisciplinary connections between computing and music. Students will learn to understand and analyze music from the perspective of audio signal processing, a process that connects computing with math, signal processing, data science, and music theory. Specific topics include the sampling theorem, discrete Fourier analysis, digital representations of music information, elementary music theory, programming tools for scientific computing and data visualization, and some real-world music applications along with their ethical implications.
PrerequisitesCMSC 221, CMSC 222 (or MATH 300 with a minimum grade of A-), and MATH 212 all with a minimum grade of C-
-
CMSC 340 Directed Independent Study
Units: 0.25-1
DescriptionTo enable well-qualified students who have completed basic requirements for major to work independently in areas not included in curriculum.
-
CMSC 388 Individual Internship
Units: 0.25-1
DescriptionNo 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
Units: 0-1
DescriptionSelected topics in Computer Science
PrerequisitesCMSC 315 with a minimum grade of C-
-
CMSC 406 Summer Undergraduate Research
Units: 0
DescriptionDocumentation 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 least 40 hours per week) during this period, and the student must be the recipient of a fellowship through the university. Graded S/U.
PrerequisitesApproval by a faculty member