UMBC logo
Undergraduate Catalog cover art

Computer Science and Electrical Engineering

Career and Academic Paths | Academic Advising | Computer Science Major Program | Computer Science Honors Program | Computer Engineering Major Program | Computer Science Minor Program | Combined B.S./M.S. | Evening Option | Special Opportunities | Student Organizations |

Faculty

View faculty details

Chair

Charles Nicholas

Professors

Tulay Adali
Gary Carter
Chein-I Chang
Yung Jui (Ray) Chen
Fow-Sen Choa
Tim Finin
Anthony M. Johnson
Anupam Joshi
Hillol Kargupta
Samuel Lomonaco
Curtis Menyuk
Joel Morris
Sergei Nirenburg
Yun Peng
John Pinkston
Penny Rheingans
Alan Sherman
Deepinder Sidhu
Krishna Sivalingam
Li Yan
Yelena Yesha

Associate Professors

Richard Chang
Marie desJardins
Konstantinos Kalpakis
Timothy Oates
Marc Olano
Dhananjay Phatak
Brooke Stephens
Mohamed Younis

Assistant Professors

Ryan Robucci

Senior Lecturer

Susan Evans

Lecturers

Dawn Block
Dennis Frey
Susan Mitchell
Reza Mohammadpourrad

Reasearch Assistant Professors

Chintan Patel

Affiliate Faculty

Janet Rutledge

Research Associate Professors

Stephen Beale
Marjorie McShane

Systems Engineering Program Director

Ted Foster

Courses in this program are listed under CMSC.

The Department of Computer Science and Electrical Engineering offers two programs of undergraduate study: one leading to a Bachelor of Science in Computer Science, and the other leading to a Bachelor of Science in Computer Engineering. Both programs provide a balanced, practical, and theoretical approach to the study of software and hardware that includes the latest advances in these two areas.

These programs emphasize the development of problem-solving skills applied to the analysis and design of real-world problems. Students in these programs also are given a broad background in the fundamentals of mathematics and the physical sciences. Because of the similarities of the two programs, students cannot double major in computer science and computer engineering, nor can they major in computer engineering and minor in computer science.

The two programs differ in emphasis. Computer engineering focuses upon problems that arise from hardware and hardware development, whereas computer science concentrates on issues in computer applications and software development. Students are encouraged to develop hybrid programs of study that combine computer science/computer engineering with other disciplines, such as biology, chemistry, economics, geography, management science, mathematics, physics, or visual arts.

Graduates of the computer science program are well prepared for advanced studies and for problem-solving across the breadth of the discipline—the theory, design, development, and applications of computers and computer systems. Major areas within the computer science program include programming languages, algorithms, operating systems, computer architecture, database systems, artificial intelligence, graphics, and the theory of computation. The program is designed to provide students with a firm grounding in the basics in each of these areas and deeper understanding in several of them.

Computer science is a rich and diverse discipline. Areas of interest to computer scientists range from theoretical studies to software engineering (performance analysis, human factors, software development tools) to the very practical development of software for business and industry. Computer scientists find that their skills—especially their problem-solving skills—have wide applicability in academic and industrial settings.

The computer engineering program provides a practical and theoretical background in computer hardware, software, interfacing, and design. Areas of interest to computer engineers range from circuit theory and digital signal processing to the study of software/hardware interfaces to the design and analysis of hardware systems and devices. Emphasis is placed on the development of problem-solving skills through hands-on laboratory experience with commercial electronic design software and hardware systems. These skills prepare computer engineers for various academic and industrial positions.

The department has close ties with nearby centers of research and development, such as NASA’s Goddard Space Flight Center, the National Institute of Standards and Technology, the Department of Defense, the Center for Computing Sciences, Northrop Grumman and Verizon.

Computer Science Major Program

The B.S. in Computer Science is accredited by the Computing Accreditation Commission of ABET. Students who wish to obtain a Bachelor of Science (B.S.) in Computer Science must satisfy the following requirements.

A grade of "C" or better is necessary for any course to be applied to the computer science major. Transfer students majoring in computer science must complete at least 18 credits in CMSC, CMPE, or ENEE courses at UMBC. Students majoring in computer science must have a grade of "B" or better in both CMSC 201 and CMSC 202 as well as completing all the prerequisites for CMSC 341 before registering for CMSC 341.

A. Required Computer Science Courses

  • CMSC 201/201H Computer Science I
  • CMSC 202/202H Computer Science II
  • CMSC 203 Discrete Structures
  • CMSC 304 Ethical and Social Issues in Information Technology
  • CMSC 313 Computer Organization and Assembly Language Programming
  • CMSC 331 Principles of Programming Languages
  • CMSC 341/341H Data Structures
  • CMSC 345 Software Design and Development
  • CMSC 411 Computer Architecture
  • CMSC 421 Principles of Operating Systems
  • CMSC 441 Algorithms

B. Required Mathematics Courses

  • MATH 151 Calculus and Analytic Geometry I
  • MATH 152 Calculus and Analytic Geometry II
  • MATH 221 Linear Algebra

C. Required Statistics Course

STAT 355 Introduction to Probability and Statistics for Scientists and Engineers (STAT 451 may be substituted for STAT 355.)

D. Required Science Courses

Computer science majors must take 12 credits in science courses. Two courses must be from one of the following sequences:
  • BIOL 100 Concepts of Biology
    AND
  • BIOL 301 Ecology and Evolution

    OR

  • BIOL 141 Foundations of Biology: Cells, Energy, and Organisms
    AND
  • BIOL 142 Foundations of Biology: Ecology and Evolution

    OR

  • CHEM 101 Principles of Chemistry I
    AND
  • CHEM 102 Principles of Chemistry II

    OR

  • PHYS 121 Introductory Physics I
    AND
  • PHYS 122 Introductory Physics II"

One additional course must be a science course from the list of approved science courses below.
If additional credits are needed to reach 12 credits in this section, these credits can be earned either by taking additional courses from the science list below, or by taking a course from the list of approved additional math courses below.

Approved Science Courses:

  • BIOL 100L
  • BIOL 251
  • BIOL 251L
  • BIOL 252
  • BIOL 252L
  • BIOL 275
  • BIOL 275L
  • BIOL 301
  • BIOL 302
  • BIOL 302L
  • BIOL 303
  • BIOL 303L
  • BIOL 304
  • BIOL 304L
  • BIOL 305
  • BIOL 305L
  • CHEM 102L
  • GES 110
  • GES 111
  • GES 120
  • PHYS 122L
  • PHYS 224
  • PHYS 304

    OR

other science courses approved by the Computer Science Undergraduate Program director. In principle, approval will only be given to science  courses designed for natural/physical science majors or engineering majors. In particular, statistics, computer science or

any of the following courses do not count toward the science requirement for computer science majors:

  • BIOL 106
  • BIOL 108
  • BIOL 123
  • CHEM 100
  • CHEM 124
  • PHYS 100
  • PHYS 105
  • PHYS 112
  • BIOL 107
  • BIOL 109
  • BIOL 123L
  • CHEM 123
  • CHEM 124L
  • PHYS 101
  • PHYS 111
  • SCI 100F.

Approved Additional Mathematics Courses:
MATH 225 MATH 251 MATH 301
A current list of additional approved science and mathematics courses is
available from the department.

E. Two computer science electives chosen from:

  • CMSC 426 Principles of Computer Security
  • CMSC 431 Compiler Design Principles
  • CMSC 435 Computer Graphics
  • CMSC 445 Software Engineering
  • CMSC 451 Automata Theory and Formal Languages
  • CMSC 455 Numerical Computations
  • CMSC 456 Symbolic Computation
  • CMSC 461 Database Management Systems
  • CMSC 471 Artificial Intelligence
  • CMSC 481 Computer Networks
  • CMSC 483 Parallel and Distributed Processing


F. Three technical electives chosen from (E) or any other three-credit CMSC 400-level course, except CMSC 404 or CMSC 495-499

Students may choose electives in this category from computer engineering courses with special permission from the CSEE department. Up to two of these courses also may be chosen from the following list of mathematics courses.

  • MATH 430 Matrix Analysis
  • MATH 441 Numerical Analysis
  • MATH 452 Introduction to Stochastic Processes
  • MATH 475 Combinatorics and Graph Theory
  • MATH 481 Mathematical Modeling
  • MATH 483 Linear and Combinatorial Optimization

Note: Courses cross-listed between CMSC and another designation can count toward the computer science B.S. requirement even if the other designation appears on the student’s transcript.

G. In addition to the requirements outlined above, students majoring in computer science are encouraged to consider taking the following courses for general elective credit:

  • CMSC 291 Special Topics in Computer Science
  • CMSC 299 Independent Study in Computer Science
  • CMSC 404 The History of Computers and Computing
  • CMSC 498 Independent Study in Computer Science for CMSC Interns and Co-op Students
  • CMSC 499 Independent Study in Computer Science
  • ENGL 393 Technical Writing

COMPUTER SCIENCE GAME DEVELOPMENT TRACK

Students majoring in computer science with a particular interest in computer game development, modeling, simulation or related fields may enroll in the computer science game development track. In addition to the regular requirements of the computer science major, students in the game development track must complete:

Game Development Track Requirements

Each of these may also count toward the computer science major requirements as indicated.

  • ART 380 History and Theory of Games (section G)
  • PHYS 121 Introductory Physics I (section D)
  • CMSC 435 Computer Graphics (section E)
  • CMSC 471 Artificial Intelligence (section E)
  • CMSC 493 Games Group Project (section F)

Two Game Development Track Electives

Two additional CMSC 400-level electives from the following list. (These electives may also count toward section F of the computer science degree requirements)

  • CMSC 445 Software Engineering
  • CMSC 455 Numerical Computation
  • CMSC 461 Database Management Systems
  • CMSC 481 Computer Networks
  • CMSC 483 Parallel and Distributed Processing

Other electives with prior permission of the game development track director


Computer Engineering Major Program


The B.S. in Computer Engineering is accredited by the Engineering Accreditation Commission of ABET. The objectives of the Computer Engineering Program are below.


  1. Prepare our graduates with the problem-solving skills and
    knowledge of real-world issues necessary to practice computer
    engineering successfully.

  2. Prepare our graduates with the fundamentals to adapt to technical
    changes in the field of computer engineering.

  3. Prepare graduates to pursue graduate and/or professional education in computer engineering.

  4. Prepare graduates with the broad skills needed for career success, including: written and oral communication, teamwork, understanding of professional and ethical responsibility, importance of and aptitude to continue lifelong learning, understanding of contemporary issues and the impact of engineering on society, and fundamental business skills such as project management, risk management and entrepreneurship.


Students who wish to obtain a Bachelor of Science (B.S.) in Computer Engineering must satisfy the following requirements.

The Computer Engineering Program has two tracks: VLSI/architecture/systems track and a communication engineering track. Both tracks share a common core detailed below.


A grade of “C” or better is necessary for any course to be applied to the computer engineering major. Transfer students majoring in computer engineering must complete at least 18 credits in CMSC, CMPE and/or ENEE courses at UMBC. In addition, each student who wishes to earn a B.S. in Computer Engineering must meet the following two gateway requirements.

  1. A grade of “B” or better in CMPE 212

  2. GPA of at least 3.0 in the following five courses:
    • CMSC 201
    • CMPE 212
    • MATH 251
    • ENGL 100
    • PHYS 122

Students must pass the gateway before taking CMSC 341, CMPE 310 and ENEE 206.

A. Required Computer Science Courses

  • CMSC 201/201H
    Computer Science I
  • CMSC 202/202H
    Computer Science II
  • CMSC 203
    Discrete Structures
  • CMSC 341/341H
    Data Structures
  • CMSC 411
    Computer Architecture
  • CMSC 421
    Principles of Operating Systems

B. Required Mathematics Courses

  • MATH 151
    Calculus and Analytic Geometry I
  • MATH 152
    Calculus and Analytic Geometry II
  • MATH 221
    Linear Algebra
  • MATH 225
    Differential Equations
  • MATH 251
    Multivariable Calculus

C. Required Engineering Course

  • ENES 101
    Introduction to Engineering

D. Required Science Courses

  • CHEM 101
    Principles of Chemistry I
  • PHYS 121
    Introductory Physics I
  • PHYS 122
    Introductory Physics II

E. Required Computer Engineering Courses

  • CMPE 212
    Principles of Digital Design (four-credit class that includes a laboratory)
  • CMPE 306
    Basic Circuit Theory
  • CMPE 310
    Systems Design and Programming
  • CMPE 314
    Digital Electronics
  • CMPE 320
    Probability and Random Processes
  • CMPE 450
    Capstone I
  • CMPE 451
    Capstone II

VLSI Architecture and Systems Track Requirements

  • CMPE 315
    Principles of VLSI Design
In addition, four technical electives are required. At least two of the four electives must be from the CMPE electives (List A), and the remaining two can be either from the CMPE electives (List A) or
approved CMSC courses (List B).

Communications Engineering Track Requirements

  • CMPE 323 Signals and Systems
  • CMPE 330 Electromagnetic Wave and Signal Transmission

In addition, three technical electives are required. At least two ofthe three electives must be from the CMPE electives (List A) and the remaining one can be either from the CMPE electives (List A) or
approved CMSC courses (List B).

The elective lists are subject to change. Students must check the current lists at the time of registration.

List A: CMPE Electives

  • CMPE 315
    Principles of VLSI Design
  • CMPE 321
    Communications Laboratory
  • CMPE 323
    Signals and Systems
  • CMPE 330
    Electromagnetic Wave and Signal Transmission
  • CMPE 412
    Robotics
  • CMPE 414
    Advanced VLSI Design
  • CMPE 415
    FPGA Architectures and Applications
  • CMPE 418
    VLSI Design Verification and Testing
  • CMPE 419
    Arithmetic Algorithms
  • CMPE 422
    Digital Signal Processing
  • CMPE 423
    Principle of Communication Engineering
  • CMPE 431
    Optical Communications and Networks
  • CMPE 432
    Optoelectronic Devices
  • CMPE 440
    Mixed Signal Design
  • CMPE 486
    Mobile Telephony Communications
  • CMPE 491
    Special Topics in Computer Engineering

List B: CMSC Electives

  • CMSC 345
    Software Design and Development
  • CMSC 422
    Operating Systems Design
  • CMSC 425
    Performance Analysis of Computer Systems
  • CMSC 431
    Compiler Design Principles
  • CMSC 435
    Computer Graphics
  • CMSC 441
    Design and Analysis of Algorithms
  • CMSC 442
    Information and Coding Theory
  • CMSC 443
    Cryptology
  • CMSC 455
    Numerical Computations
  • CMSC 481
    Computer Networks
  • CMSC 482
    Computer Systems Security
  • CMSC 483
    Parallel and Distributed Processing
  • CMSC 486
    Mobile Radio Communications

G. Required Liberal Studies Course

Computer engineering majors are required to complete:
  • ENGL 393
    Technical Writing

H. Required Arts and Humanities Course

  • PHIL 251
    Ethical Issues in Science, Engineering and Information Technology