UMBC logo
Undergraduate Catalog 2011

Computer Science and Electrical Engineering

Faculty

View Faculty Details

Chair

Gary Carter

Professors

Tulay Adali
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
Charles Nicholas
Sergei Nirenburg
Yun Peng
John Pinkston
Penny Rheingans
Zary Segall
Alan Sherman
Deepinder Sidhu
Li Yan
Yaacov Yesha
Yelena Yesha

Associate Professors

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

Assistant Professors

Tinoosh Mohsenin
Chintan Patel
Ryan Robucci
Gymama Slaughter

Lecturers

Ryan Bergeron
Dawn Block
Dennis Frey
Susan Mitchell

Affiliate Faculty

Ivan Erill
Matthias K. Gobbert
Maricel Kann
Janet Rutledge
John Zweck

Systems Engineering Program Director

Ted Foster

Professor of the Practice

E.F. Charles LaBerge

Cybersecurity Program Director

Richard Forno

Engineering Management Program Director

Ted Foster

Courses in this program are listed under CMSC and CMPE.

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.

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.
Back to Top

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.
Back to Top

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 another of the eight courses listed above, or a 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.

Back to Top

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.

Back to Top

Computer Engineering Major Program

The B.S. in Computer Engineering is accredited by the Engineering Accreditation Commission of ABET. The objective of the Computer Engineering program at UMBC is to prepare and educate students who, when evaluated 3-5 years after graduation, will be successful practitioners of the art and science of engineering by

  • Applying their problem-solving skills and knowledge of Computer Engineering to their assigned responsibilities;
  • Making valuable contributions in the engineering work force, thereby advancing in their careers;
  • Successfully adapting to technical changes in their chosen fields; and,
  • Succeeding in continuing education.

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: Electronic 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.

  • A grade of “B” or better in CMPE 212
  • 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 CMPE 306.

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

Electronic Systems Track Requirements

  • CMPE 315
    Principles of VLSI Design
  • CMPE 415
    Programmable Logic Devices

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 elective can be either from the CMPE electives (List A) or approved CMSC courses (List B).

Communications Engineering Track Requirements

  • CMPE 323
    Signal and Systems Theory
  • CMPE 330
    Electromagnetic Waves and 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).

List A: CMPE Electives

The list A electives are subject to change. Other 400-level CMPE courses may be substituted with the permission of the CMPE Undergraduate Program Director. Students must check the current list at the time of registration.

  • 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 440
    Mixed Signal Design
  • CMPE 447
    Analog Integrated Circuit Design
  • CMPE 486
    Mobile Telephony Communications
  • CMPE 491
    Special Topics in Computer Engineering

List B: CMSC Electives

The list B electives are subject to change. Other 400-level CMSC courses may be substituted with the permission of the CMPE Undergraduate Program Director. Students must check the current list at the time of registration.

  • 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
Back to Top

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/201H
    Computer Science I
  • CMSC 202/202H
    Computer Science II
  • CMSC 203*
    Discrete Structures
  • CMSC 341/341H
    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.

Back to Top

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.

Back to Top

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.
Back to Top

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.
Back to Top

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.
Back to Top