Go to content

Undergraduate Catalog 2016-2017

Computer Science (CMSC)

College of Computer, Mathematical and Physical Sciences
1119 A.V. Williams Building, 301-405-2672
www.cs.umd.edu
ugrad@cs.umd.edu
Chair: S. Khuller
Professors: A. Agrawala, J. Aloimonos, B. Bederson, S. Bhattacharjee, W. Cleaveland, L. Davis, R. Duraiswami, H. Elman, J. Foster (Assoc Chair), W. Gasarch, M. Hicks, J. Hollingsworth, D. Jacobs, J. Katz, A. Memon, D. Mount, D. Nau, D. Perlis, A. Porter, J. Reggia, N. Roussopoulos, E. Ruppin, H. Samet (Distinguished University Professor), A. Shankar, B. Shneiderman (Distinguished University Professor), A. Srinivasan, V. Subrahmanian, A. Sussman (Assoc Chair), A. Varshney
Associate Professors: A. Childs, H. Corrada Bravo, H. Daume, A. Deshpande, M. Hajiaghayi, P. Keleher, C. Kruskal, M. Pop, J. Purtilo, N. Spring
Assistant Professors: M. Carpuat, J. Froehlich, T. Goldstein, Z. Khan, M. Mazurek, E. Shi, D. Van Horn
Senior Lecturer: E. Golub, J. Plane
Lecturers: F. Emad, L. Herman, M. Hugue, A. Mamat, N. Padua-Perez, T. Reinhardt, P. Sadeghian, V. Sazawal
Professors Emeriti: W. Arbaugh, V. Basili, B. Dorr, L. Kanal, R. Miller, J. Minker, D. O'Leary (Distinguished University Professor Emerita), W. Pugh, G. Stewart (Distinguished University Professor Emeritus), M. Zelkowitz

The Major

Computer science is the study of computers and computational systems:  their application, design, development and theory.  Principal areas within computer science include artificial intelligence, computer systems, database systems, human factors, numerical analysis, programming languages, software engineering, and theories of computing.  A computer scientist is concerned with problem solving.  Problems range from abstract questions of what problems can be solved with computers to practical matters such design of computer systems which are easy for people to use.  Computer scientists build computational models of systems including physical phenomena (weather forecasting), human behavior (expert systems, robotics), and computer systems themselves (performance evaluation).  Such models often require extensive numeric or symbolic computation.

Admission to the Major

Students who are accepted to the university and list Computer Science as the preferred major will start directly in our program. Students who wish to add Computer Science as a major must attend a workshop. More details can be found at http://undergrad.cs.umd.edu/future .

Placement in Courses

Much of the knowledge at the early stage of the degree program is cumulative.  To ensure that transfer and new students start with the appropriate courses, the department offers exemption exams for CMSC131, 132, 216, and 250.  Students who have had CS courses prior to starting at Maryland can visit  http://undergrad.cs.umd.edu/exemption-exams for more information.

Requirements for the Major

Much of the knowledge at the early stage of the degree program is cumulative. To ensure that transfer students start with the appropriate courses, the department offers exemption exams for CMSC131, 132, 216, and 250. Students who have had CS courses prior to starting at Maryland should schedule and take
exemption exams.

A "C-" or better must be earned in all major requirements.

Required Lower Level Courses (Unless Exempt)

MATH140 (4) Calculus I
MATH141 (4) Calculus II
CMSC131 (4) Object-Oriented Programming I
CMSC132 (4) Object-Oriented Programming II
CMSC216 (4) Introduction to Computer Systems
CMSC250 (4) Discrete Structures
**Students may fulfill CMSC131, 132, 216 or 250 course requirements by passing proficiency exams before they start the sequence of classes.

Additional Required Courses

CMSC330 (3) Organization of Programming Languages
CMSC351 (3) Algorithms
STAT4xx (3) This course must have prerequisite of MATH141 or higher; cannot be cross-listed with CMSC
MATH/AMSC/STAT xxx (3/4) This course must have prerequisite of MATH141 or higher; cannot be cross-listed with CMSC

Upper Level Computer Science Courses

At the upper level, students take five (5) 400 level courses from at least three different areas with no more than two courses in a given area. An additional two (2) electives, totaling 6 credits, for the general computer science degree are also required. If students take more than two courses from an area, they will be counted as electives. Students can count one credit winter courses towards the elective requirement, as well as independent research or study with a faculty member, and other courses at the 300 or 400 level.

Area 1: Systems (No more than two courses not counting electives)
CMSC411 (3) Computer Systems Architecture
CMSC412 (4) Operating Systems
CMSC414 (3) Computer and Network Security
CMSC417 (3) Computer Networks

Area 2: Information Processing (No more than two courses not counting electives)
CMSC420 (3) Data Structures
CMSC421 (3) Introduction to Artificial Intelligence
CMSC422 (3) Machine Learning
CMSC423 (3) Bioinformatic Algorithms, Databases, and Tools
CMSC424 (3) Database Design
CMSC426 (3) Image Processing
CMSC427 (3) Computer Graphics

Area 3: Software Engineering and Programming Languages (No more than two courses not counting electives)
CMSC430 (3) Introduction to Compilers
CMSC433 (3) Programming Language Technologies and Paradigms
CMSC434 (3) Introduction to Human-Computer Interaction
CMSC435 (3) Software Engineering
CMSC436 (3) Hand Held Programming Devices
 
Area 4: Theory (No more than two courses not counting electives)
CMSC451 (3) Design and Analysis of Computer Algorithms
CMSC452 (3) Elementary Theory of Computation
CMSC456 (3) Cryptology
 
Area 5: Numerical Analysis (choose one)
CMSC460 (3) Computational Methods (Credit will only be given for CMSC460 or CMSC466)
CMSC466 (3) Introduction to Numerical Analysis (Credit will only be given for CMSC466 or CMSC460)

Upper Level Concentration Requirement

Students must also take at least 12 credits of 300-400 level courses from one discipline outside of CMSC. No course in or cross-listed with CMSC can be counted. An overall 2.0 average must be earned in these courses. Each course must be a minimum of 3 credits. Only 1 special topics or independent study course may be used.
 

Cybersecurity Specialization
Students looking to pursue the cybersecurity specialization are required to complete the lower level courses (MATH140, MATH141, CMSC131, CMSC132, CMSC216, CMSC250), the additional required courses (CMSC330, CMSC351, MATH/STATXXX and STAT4xx beyond MATH141), and the upper level concentration requirements as detailed above. The difference in the specialization is the upper level computer science courses.

Students are required to take:
CMSC412
CMSC414
CMSC417
CMSC433
CMSC456

Students must choose:
CMSC411 OR CMSC430 (may not take both to complete requirements)
and
CMSC420 OR CMSC451 (may not take both to complete requirements)

Data Science Specialization
Students looking to pursue the data science specialization are required to complete the lower level courses (MATH140, MATH141, CMSC131, CMSC132, CMSC216, CMSC250), the additional required courses (CMSC330, CMSC351, MATH/STATXXX beyond MATH141), and the upper level concentration requirements as detailed above. The difference in the specialization is the upper level computer science courses.

Students are required to take:
CMSC320
CMSC422
CMSC424
STAT400

Students must choose one course from:
CMSC402
CMSC420
CMSC421
CMSC423
CMSC425
CMSC426
CMSC427

Students must choose one course from:
CMSC451
CMSC460

Students must choose two courses from:
CMSC411
CMSC412
CMSC414
CMSC417
CMSC430
CMSC433
CMSC434
CMSC435

Requirements for the Minor

The purpose of the minor in Computer Science is not only to give students a strong foundation in, and understanding of, algorithmic reasoning, problem solving methods involving computers and computation, and a solid base to help students adapt to future changes in technology, but to complement and enhance any student's major program of study.  The computer science minor may be earned by students not majoring in computer science and computer engineering.  A grade of "C-" or better must be earned in all courses required for the minor.  See  http://undergrad.cs.umd.edu/cs-minor  for detailed information.  The award of a minor will be noted on the student's transcript at the time of graduation.

Advising

All advising for CS students is done in the Computer Science Department.  All CS majors must attend an advising session each semester prior to registering for classes.  Advising appointments may be scheduled at  https://webapps.cs.umd.edu/ugrad/advising/login.php .

Honors Program

Students looking for opportunities to enhance their computer science education are encouraged to participate in the Computer Science Undergraduate Honors Program.  The program is open to students in the CS major who have earned a GPA of 3.5 in computer science courses and a GPA of 3.25 overall. Some of the benefits of the program include the following: (1) learning how to conduct research properly, (2) working closely with faculty members, and (3) increasing preparedness for graduate school.

For more information about the honors program, please visit the CS Honors website: http://undergrad.cs.umd.edu/computer-science-honors

Scholarships and Financial Assistance

There are multiple endowed scholarships available to students majoring in computer science.  Additional details can be found at http://undergrad.cs.umd.edu/scholarships .

Students may find employment as tutors, as undergraduate teaching assistants, or as members of the department's laboratory staff. Professors may also have funds to hire undergraduates to assist in research.  Many students also participate in internship experiences, working in the computer industry during the summer after their sophomore and/or junior years.

The Office of Student Financial Aid (OSFA) administers all types of federal, state and institutional financial assistance programs and, in cooperation with other university offices, participates in the awarding of scholarships to deserving students. For information, visit: www.financialaid.umd.edu .

Return to top