UMBC logo
Undergraduate Catalog cover art

Computer Science and Electrical Engineering

Career and Academic Paths | Academic Advising | Computer Science Major Program | Computer Science Game Development Track | Computer Science Honors Program | Computer Engineering Major Program | VLSI Architecture and Systems Track Requirements | Communications Engineering Track Requirements | 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
Samuel Lomonaco
Curtis Menyuk
Joel Morris
Sergei Nirenburg
Yun Peng
John Pinkston
Zary Segall
Deepinder Sidhu
Krishna Sivalingam
Li Yan
Yelena Yesha

Associate Professors

Richard Chang
Marie desJardins
Konstantinos Kalpakis
Hillol Kargupta
Timothy Oates
Marc Olano
Dhananjay Phatak
James Plusquellic
Penny Rheingans
Alan Sherman
Brooke Stephens
Mohamed Younis

Assistant Professors

Ryan Robucci

Senior Lecturer

Susan Evans

Lecturers

Dawn Block
Dennis Frey
E.F. Charles LaBerge
Susan Mitchell

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, visual arts and other related disciplines.
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 application of computers and computer systems. Major areas within the computer science program include programming languages, algorithms, operating systems, computer architecture, database systems and 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 their skills — especially their problem-solving skills — have wide applicability in academic and in 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.

Career and Academic Paths

Graduates of the computer science and computer engineering programs at UMBC find employment in government, industry and business. They are well-prepared for careers in software and hardware development. Graduates have been admitted to some of the top graduate programs in the nation. Others have found jobs with such employers as the Department of Defense, IBM, NASA, Northrop Grumman, Verizon and many local industries, including numerous exciting startup companies.

The department’s M.S. and Ph.D. programs in computer science, computer engineering and electrical engineering provide advanced training in their respective areas. Each of these programs provides students with additional marketable skills for career opportunities in business, industry, government agencies and academic environments. Outstanding undergraduate students are encouraged to enroll in graduate-level courses. The department also offers a combined B.S./M.S. program for talented students. For more details, please refer to the section below titled Combined B.S./M.S.

Academic Advising

Students majoring in computer science are advised by Undergraduate Student Services in the College of Engineering and Information Technology until they are eligible to register for CMSC 341. Once a student registers for CMSC 341 he or she will be assigned an individual faculty advisor. Students majoring in computer engineering are assigned individual faculty advisors after they pass the gateway.

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 pre-requisites 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
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
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
The remaining credits must be from science courses from the following list:
BIOL 100     BIOL 100L
BIOL 251     BIOL 251L
BIOL 252     BIOL 252L
BIOL 275     BIOL 275L
BIOL 301     BIOL 302
BIO 302L     BIOL 303
BIOL 303L   BIOL 304
BIOL 304L   BIOL 305
BIOL 305L   CHEM 101
CHEM 102   CHEM 102L
GES 110      GES 111
GES 120      PHYS 121
PHYS 122    PHYS 122L
PHYS 340L
OR from 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, mathematics, statistics, computer science or any of the following courses do not count toward the science requirement for computer science majors:
BIOL 106       BIOL 107
BIOL 108       BIOL 109
BIOL 123       BIOL 123L
CHEM 100    CHEM 123
CHEM 124    CHEM 124L
PHYS 100     PHYS 101
PHYS 105     PHYS 111
PHYS 112     SCI 100
A current list of previously approved 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. Computer science majors must complete at least 30 credit hours of liberal studies.

For the purposes of this requirement, liberal studies courses include any course with an “AH,” “SS,” “L” or “C” designation and ENGL 100 (or its equivalent).

Note: Students first should choose their liberal studies courses to satisfy the General Foundation Requirements (GFR) or General Education Program (GEP) requirements as applicable. In many cases, these courses already carry 30 credit hours. Students who satisfy the GFR/GEP requirements with fewer than 30 credit hours in liberal studies must complete additional courses.

Transfer credit and advanced placement credit for the appropriate courses may be used to satisfy this requirement. However, neither departmental credit nor demonstration of language proficiency may be used to satisfy this requirement.

Students who have a strong background in a foreign language and who have placement at the 201 level or higher should consider obtaining advanced placement credit through the AP, CLEP or IB exams.

Credit for foreign-language courses at the 101 level may be used to satisfy this departmental requirement. With permission of the CSEE department, some upper-level liberal studies courses that do not have an “AH,” “SS,” “L” or “C” designation may be used to satisfy this requirement.

Credit for ENGL 393 may be used to satisfy this requirement.
CMSC 304 can be used in both categories A and G above. No other course may be used in more than one of the above seven categories.
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 Science Honors Program

Computer science majors who have received a grade of “A” in both CMSC 201 and CMSC 202 are eligible to participate in the Computer Science Honors Program. Students in the program must maintain a 3.25 overall GPA and a 3.5 GPA in CMSC courses. To receive departmental honors, students must complete the following courses with a grade of “B” or better.

CMSC 341H
Data Structures
Two CMSC 4XX honors courses (except CMSC 404 and CMSC 495-499)
AND They must complete CMSC 495: Honors Thesis under the direction of a faculty advisor. Note: The credits for CMSC 495 are in addition to the usual requirements for a computer science major. Applications for the honors program and further information are available from the department.

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:

a) CMSC 201
b) CMPE 212
c) MATH 251
d) ENGL 100
e) 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
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 of the 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

Computer Science Minor Program

Students who minor in computer science must complete 23 credits of course work that satisfies the following requirements. A list of suggested combinations of courses
that satisfy the minor requirements can be obtained
from the department.

Core Courses (14 credits):

CMSC 201
Computer Science I
CMSC 202
Computer Science II
CMSC 203*
Discrete Structures
CMSC 341
Data Structures
*    MATH 301 may be taken instead of CMSC 203. However, it is highly recommended that students take CMSC 203 before MATH 301.

Three more courses(9 credits):

One to three courses chosen from the list below.
CMSC 4XX
(except CMSC 404 and 496-498)

AND
Two or fewer courses chosen from the list below.
CMSC 313
Computer Organization and Assembly Language Programming
CMSC 331
Programming Languages
MATH 221
Linear Algebra
With departmental permission, some graduate-level courses may be substituted.

Combined B.S./M.S.

Computer science and computer engineering majors considering a master of science degree may apply for admission to the combined B.S./M.S. program.

Please contact the department for details. Up to nine credits of approved graduate-level courses may be applied to the bachelor’s degree. According to UMBC Graduate School policy, students in the combined program must maintain a total GPA of 3.0 or higher. By the time a student has earned nine graduate credits, he or she must have completed the regular application process for formal admittance to the M.S. program.

Evening Option

Evening sections of many computer science courses are offered. Many of the requirements for the computer science major can be fulfilled by attending evening courses. However, some required courses for the computer engineering major are offered only in daytime sections.

Special Opportunities

Students may elect to participate in internship or co-op programs during their undergraduate studies.

For several reasons, the Department of Computer Science and Electrical Engineering recommends that every student seriously consider at least one tour of professional practice during his or her undergraduate program. The experience may clarify and help determine succeeding semester course
choices. Those who co-op may earn enough money to pay tuition expenses for a subsequent semester. Additionally, a co-op experience can be used to earn up to three credits of upper-level academic elective credit. Finally, both internships and co-op tours arm the new college graduate with what most employers are looking for: experience. Co-op positions that extend beyond a single semester are normally full-time, paid experiences. Internships are part-time, professional, on-the-job positions that are completed within a semester. Eligibility is based upon the completion of 30 credits, 15 of which must be from a full-time semester on a University System of Maryland campus. The student must have at least a 2.5 GPA. Interested students should contact UMBC’s Shriver Center.

Student Organizations

Student Councils
Two student-led councils of majors provide students the opportunity to meet and work with fellow computer science and computer engineering students on various projects.