UMBC’s B.S. in Computer Science, an ABET accredited program, introduces students to a rich and diverse discipline. Opportunities in the exciting emerging fields such as artificial intelligence, machine learning, cybersecurity, malware analysis, mobile computing, graphics, game design, quantum computing, human-computer interaction, forensic analysis, and data science are accessible in a wide range of environments. Computing jobs are in the top of the fastest growing and highest paid jobs in the country according to Bureau of Labor Statistics. UMBC computer science graduates are employed by varied businesses*: tech industry leaders, government agencies, the defense industry, and video game design companies. Other major employers include financial technology, transportation, and a variety of other startups.
Graduates of the computer science program are well prepared for advanced studies and for problem-solving across the breadth of the discipline: theory, design, architecture, development and application of computers and computer systems.Many go on to graduate school in top Computer Science and Computer Engineering departments. Career paths include software engineers, database administrators, network architects, computer programmers, web developers and information security analysts.
UMBC has celebrated being considered both a most innovative school (#9) and best undergraduate teaching school (#12) by US News and World Report. We welcome you to join our highly diverse student body.
*Google, Amazon, Microsoft, NSA, NIST, CIA, Northrop Grunman, Lockheed Martin, Firaxis, JP Morgan, T Rowe Prices, Legg Mason, UPS, and many more ...
Learn More About the Program
For advising when applying to the Computer Science program and taking classes at the Shady Grove campus, connect with Kim Casimbon, USGadvising@cs.umbc.edu
Suggested Transfer Pathways
The BS in Computer Science Program is currently articulated with the following community college partners: Montgomery College
Please view the Undergraduate Catalog for full course descriptions.
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
Required & Recommended Prerequisites
For full transfer requirements visit the COEIT Undergraduate Advising and Gateway Requirements website.
Required Transfer Coursework
- Computer Science I with a grade of B or higher and no more than one prior attempt
- Computer Science II with a grade of B or higher and no more than one prior attempt.
- Discrete Structures with a grade of C or higher and no more than one prior attempt.
- Calculus and Analytic Geometry I with a grade of C or higher and no more than one prior attempt.
- Calculus and Analytic Geometry II with a grade of C or higher and no more than one prior attempt.
Note: Withdrawal from a course is considered a prior attempt
Recommended Transfer Coursework
- 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*
- Advanced coursework in C++ (counts as one lower level elective)**
- English Composition*
- 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 expectations)
Note:* Courses marked with an * are strongly recommended prior to transfer. Please consult ARTSYS for more information on course transferability.
Note:** Prior to taking 300-level Computer Science courses at UMBC, transfer students who have completed coursework equivalent to Computer Science I, Computer Science II, and Discrete Structures at other institutions should also be familiar with the following in C++:
- Using inheritance and polymorphism to make their applications more code efficient.
- Using template functions and classes to create data structures.
- Implementing linked lists from scratch to solve a programming problem.
- Using pointers to dynamically allocate memory.
Students without this requisite knowledge are strongly encouraged to complete advanced coursework in C++ prior to entering the Computer Science program at UMBC.
Students transferring from four-year institutions, in-state or out-of-state, and from out-of-state community colleges, must provide course descriptions and course syllabi to determine course equivalencies. More information about the transfer credit process can be found on the Registrar’s Office Transfer Credits web page. Students transferring to UMBC from Maryland Community Colleges have access to ARTSYS, the Articulation System for Maryland Colleges and Universities.
Questions about the Computer Science Program?
Contact Jeannette Kartchner, Associate Program Director, at USGdirector@cs.umbc.edu or 240-665-6451.
Students pursuing a bachelor's degree must complete university requirements. Progress toward completion of university requirements is evaluated by means of the Transfer Credit Report (TCR) which is available online to students via myUMBC once admitted to the university. Progress toward major completion is evaluated in the academic departments. University requirements include:
- Minimum of 120 academic credits
- Minimum of 2.0 grade point average
- 45 Upper Level Credits
General Requirements are an important component of study at UMBC. Please refer to the following worksheets for guidance.
- For students who entered higher education prior to Summer 2007: GFR Worksheet
- For students entering higher education Summer 2007 or later: GEP Worksheet
Additional Advising Resources
From July 2017 through June 2018, the number one most in-demand job in Montgomery County was Software Engineer/Developer according to Burning Glass Technologies, a labor market analysis company. According to O*NET, an occupational information database sponsored by the U.S. Department of Labor, the number of job openings for Computer and Information Research Scientists in Maryland is expected to increase by 27% during the period 2014 - 2024.
A query by the Labor Insight employer-demand tool searching for job postings in Maryland during the past 12 months in the broad categories of Computer or Information Systems Analysts or Computer and Information Research Scientist identified 9,744 job postings with these parameters. Labor Insight indicated that this was a much higher demand than average when compared to the national labor market. Of these postings, the largest percentage (22.5%) were located in Montgomery County. Montgomery County employers searching for these employees include Leidos, Booz Allen Hamilton, Marriott, Geico, and Lockheed Martin.