
Computer Science
Apply For ProgramProgram Details
- No. 1 UMBC computer program
- ABET accredited program
- Top 100 computer science programs in the U.S.
Introduction
Earn your bachelor’s degree in computer science at UMBC-Shady Grove and unlock innovation, creativity, and the power to solve real-world problems. Our unique model helps you save on tuition while earning the same UMBC degree as four-year students. You’ll graduate with skills in computer theory, design, architecture, development, and application.
UMBC’s computer science program is ABET-accredited, meaning it is internationally-recognized for meeting high standards. Plus, you can narrow your focus by completing one or both optional program tracks in cybersecurity and data science.
Steps to Your Degree
More About the Program
Prerequisites
Required Transfer Coursework
- Computer Science I with a grade of B or higher
- Computer Science II with a grade of B or higher
- Discrete Structure with a grade of C or higher
- Calculus and Analytic Geometry I with a grade of C or higher
- Calculus and Analytic Geometry II with a grade of C or higher
Students must earn the required grade within two attempts of each course. Withdrawal from a course counts as an attempt.
Recommended Transfer Coursework
The following prerequisites are strongly recommended prior to transfer:
- Natural science including a sequence in Biology, Chemistry, or Physics that must include at least one lab, with a grade of C or higher and no more than one prior attempt
- Introduction to Linear Algebra with a grade of C or higher and no more than one prior attempt
- English Composition
It is also recommended that you complete as many of the following courses as possible before transfer. These courses are required for graduation from UMBC and many cannot be taken at UMBC-Shady Grove:
- 2 Arts and Humanities courses (from at least two different disciplines)
- 3 Social Science courses (from at least two different disciplines)
- World Language 201-Level (consult advisor about exceptions)
For full transfer requirements visit the COEIT transfer information webpage.
Montgomery College Agreement
If you are completing your associate degree at Montgomery College, we encourage you to follow our articulation agreement. This agreement outlines the exact courses you should take to prepare for transfer: A.A. Computer Science and Technologies / B.S. in Computer Science (PDF)
STEM Ready
Students currently enrolled in Montgomery County Public Schools or at Montgomery College can join our STEM Ready pathway to explore opportunities in science, technology, engineering, and math before transfer to UMBC-Shady Grove.
Advising & Next Steps
All students are strongly encouraged to complete pre-transfer advising before joining us at UMBC-Shady Grove. Explore pre-transfer advising options.
You’re also welcome to contact Assistant Director of Advising Kim Casimbon directly at sgcoeitadvising@umbc.edu if you have any questions about prerequisites, the program, or your future in computer science.
Admitted and current students should visit our advising FAQs.
Major Requirements
UMBC Graduation Requirements
- Minimum of 120 academic credits
- Minimum of 2.0 GPA
- 45 upper-level (300 & 400-level) credits
Cybersecurity and Data Science Tracks
UMBC-Shady Grove students may declare two available tracks as part of their computer science program.
UMBC-Shady Grove courses for the cybersecurity track:
- CMSC426 Principles of Computer Security
- CMSC481 Computer Networks
- CMSC487 Intro to Network Security
- CMSC449 Malware Analysis
UMBC-Shady Grove courses for the data science track:
- CMSC462 Introduction to Data Science
- CMSC471 Introduction to Artificial Intelligence
- CMSC478 Introduction to Machine Learning
- Data Science Special Topics Course
Learn more about the cybersecurity and data science tracks to see all applicable UMBC courses.
Course Descriptions
Please view the Undergraduate Catalog for full course descriptions. Visit USG’s website to learn which classes will be available during the upcoming semester.
CMSC 304 Ethical Issues in Information Technology (3 credits)
A survey course that reviews social issues and the ethical impact of information technology throughout the world. The course examines the policy issues that relate to the use of information technology, such as persona, privacy, rights of access, security, transborder information flow and confidentiality.
CMSC 313 Computer Organization and Assembly Language Programming (3 credits)
This course introduces the student to the low-level abstraction of a computer system from a programmer’s point of view, with an emphasis on low-level programming. Topics include data representation, assembly language programming, C programming, the process of compiling and linking, low-level memory management, exceptional control flow, and basic processor architecture.
CMSC 331 Principles of Programming Languages (3 credits)
This course examines the theory, design and implementation of programming languages and provides students with an introduction to programming languages that are likely to be new to them. Topics include specifications of syntax and semantics, declarations, binding, allocation, data structures, data types, control structures, control and data flow, concurrency, and the implementation and execution of programs. The major language paradigms will be described and explored, including imperative, object-oriented, functional, logic programming, concurrent and others. Programming projects will provide experience in several languages.
CMSC 341 Data Structures (3 credits)
An examination of a range of advanced data structures, with an emphasis on an object-oriented approach. Topics include asymptotic analysis; various binary search trees, including red-black and splay trees; skip lists as alternatives to binary search trees; data structures for multidimensional data such as K-D trees; heaps and priority queues, including binary heaps, binomial heaps, leftist heaps (and/or other mergeable heaps); B-trees for external storage; other commonly used data structures, such as hash tables and disjoint sets. Programming projects in this course will focus on implementation issues for data structures and on empirical analysis of their asymptotic performance.
CMSC 411 Computer Architecture (3 credits)
This course covers the design of complex computer systems making heavy use of the components and techniques discussed in CMSC 313, CMPE 212 and CMPE 310. All parts of the computer system – CPU, memory and input/output – are discussed in detail. Topics include information representation, floating-point arithmetic, instructions set design issues (RISC vs. CISC), microprogrammed control, hardwired control, pipelining, memory cashes, bus control and timing, input/output mechanism and issues in the construction of parallel processors.
CMSC 421 Principles of Operating Systems (3 credits)
This course gives students hands on experience with all phases of the data science process using real data and modern tools. Topics that will be covered include data formats, loading, and cleaning; data storage in relational and non-relational stores; data analysis using supervised and unsupervised learning, and sound evaluation methods; data visualization; and scaling up with cloud computing, MapReduce, Hadoop, and Spark.
CMSC 441 Design and Analysis of Algorithms (3 credits)
This course studies fundamental algorithms, strategies for designing algorithms, and mathematical tools for analyzing algorithms. Fundamental algorithms studied in this course include algorithms for sorting and searching, hashing, and graph algorithms. Mathematical tools include asymptotic notations and methods for solving recurrences. Algorithm design strategies include the greedy method, divide-and-conquer, dynamic programming, and randomization.
CMSC 447 Software Engineering I (3 credits)
This course introduces the basic concepts of software engineering, including software life cycle, requirements analysis and software design methods. Professional ethics in computer science and the social impact of computing are discussed as an integral part of the software development process. Additional topics may include tools for software development, software testing, software metrics and software maintenance.
STAT 355 Probability and Statistics (4 credits)
An introduction to applied statistics designed for science majors and others with demonstrated quantitative ability. Topics include nature of statistical methods, random variables and their distribution functions, general principles of estimation and hypothesis testing. A laboratory introduces students to computer techniques in statistical analysis.
The program requires 62 credits taken at UMBC as well as:
- 28 credit hours required in computer science
- 4 credits of statistics
- 12 credits of required computer science coursework for the cyber track or 12 credits for the data science track
- 9 credits of electives, including 3 credits of technical electives
Career Opportunities
Computer science offers many career opportunities:
- The average annual salary for computer programmers is $101,000 in the Washington, DC, area – Bureau of Labor Statistics, 2023
- Washington DC is #3 for employment in computer programming and computer and information research science – Bureau of Labor Statistics, 2023
- Montgomery County employers searching for these employees include Leidos, Booz Allen Hamilton, Marriott, Geico, and Lockheed Martin
Learn more about computer science career paths (PDF).
Our Faculty
Program News and Highlights
Alumni Spotlight

Ray Karyshyn '23
Computer Science
“After graduating from UMBC, [I] secured a position as a systems engineer at Northrop Grumman. [I have] successfully applied concepts learned from courses to real-world situations through system modeling, requirement analysis, and healthy customer relations.”

Carol Rios Rocha '22
Computer Science
“Since earning my computer science degree, I have leveraged my technical academic background to work with software development, system architecture, IT project portfolio management, and business processes."

Michael Metzler '22
Computer Science
“Since graduating from UMBC, I have been working in software development and data analysis. I work with a wide array of customers to design and build software that addresses their challenges and furthers their success.”
B.S. in Computer Science Information Request