Course Listings

Social Networking and Cybersecurity Best Practices

CMSC 100 | 3 Credits

Course Desc: (Formerly CMIS 111.) A hands-on study of current social networking applications and approaches to protect against cyber-attacks and enhance personal cybersecurity. The goal is to collaborate and interact through personal and professional social networking while developing and using computer security best practices. Discussion covers issues associated with the impact of social computing on individuals and society. Projects include creating and maintaining accounts on selected social networking sites. Students may receive credit for only one of the following courses: CMIS 111 or CMSC 100.

Introduction to Programming in Python

CMSC 105 | 3 Credits

Course Desc: (Formerly CMIS 102.) An applied introduction to Python programming. The objective is to create programs using variables, basic data types, conditionals, loops, functions, and lists. Hands-on activities include writing, testing, and debugging code; applying basic secure programming practices; building programs incrementally; and using AI tools to support comprehension and refinement. Students may receive credit for only one of the following courses: CMIS 102, CMIS 102A, CMSC 101, or CMSC 105.

Fundamentals of Programming and Software Development

CMSC 115 | 3 Credits

Course Desc: (Formerly CMIS 141.) An applied study of foundational Java programming and software development. Hands-on activities use professional tools to write, test, debug, and document programs using variables, control flow, methods, arrays, and core libraries. Algorithmic thinking, basic secure coding practices, version control, and AI-assisted coding are integrated to support effective programming workflows. Students may receive credit for only one of the following courses: CMIS 141, CMIS 141A, or CMSC 115.

Introduction to Discrete Structures

CMSC 150 | 3 Credits

Course Desc: An introduction to discrete concepts that support reasoning and problem solving in computer science. Topics include sets, functions, relations, graphs, trees, and logic. Proof techniques are introduced as tools to verify properties of discrete structures. Emphasis is placed on identifying and applying patterns, reasoning logically, and clearly communicating solutions. Students may receive credit for only one of the following courses: CMSC 150 or CMSC 250.

Object Oriented Programming

CMSC 215 | 3 Credits

Course Desc: Prerequisite: CMSC 115 (or CMIS 141). An applied study of object-oriented programming in Java. The goal is to develop modular, reusable, and scalable software using classes, records, inheritance, interfaces, and generic types. Hands-on exercises and projects reinforce OOP concepts. Key topics include object-oriented design principles, Unified Modeling Language (UML), polymorphism, type-safe generic programming, exception handling, and secure coding practices. Students may receive credit for only one of the following courses: CMSC 215 or CMIS 242.

Introduction to Database Systems

CMSC 220 | 3 Credits

Course Desc: An applied introduction to relational database design and implementation using SQL. Topics include data modeling, entity-relationship diagrams, schema design and normalization, query development, and database architecture, with an overview of non-relational data models. Hands-on projects use industry-standard DBMS tools to develop practical database design and implementation skills. Students may receive credit for only one of the following courses: CMIS 320, CMSC 220, CMSC 320, or IFSM 410.

Computer Systems and Architecture

CMSC 310 | 3 Credits

Course Desc: (Formerly CMIS 310.) Prerequisite: CMSC 115 (or CMIS 141). A study of the fundamental concepts of computer architecture and factors that influence the performance of a system. The aim is to apply practical skills to computer systems architecture. Topics include data representation, assembly language, central processing unit architecture, memory architecture, and input/output (I/O) architecture. Students may receive credit for only one of the following courses: CMIS 270, CMIS 310, CMSC 310, CMSC 311, or IFSM 310.

Data Structures and Analysis

CMSC 315 | 3 Credits

Course Desc: (Formerly CMSC 350.) Prerequisite: CMSC 215 (or CMIS 242). An applied study of fundamental data structures and algorithms. Topics include lists, stacks, queues, dictionaries, trees, and graphs, along with sorting, searching, and recursion. Emphasis is on implementing data structures, developing and testing iterative and recursive solutions, and examining their behavior, efficiency, and alternative implementations. Students may receive credit for only one of the following courses: CMSC 315 or CMSC 350.

Relational Database Concepts and Applications

CMSC 320 | 3 Credits

Course Desc: (Formerly CMIS 320.). Prerequisite: CMSC 115 (or CMIS 141). A study of the functions, underlying concepts, and applications of enterprise relational database management systems (RDBMS) in a business environment. The aim is to appropriately use databases to meet business requirements. Discussion covers entity/relationship diagrams, relational theory, normalization, integrity constraints, the Structured Query Language (SQL), and physical and logical design. Business case studies and projects include hands-on work using an industry standard RDBMS. Students may receive credit for only one of the following courses: CMIS 320, CMSC 320, or IFSM 410.

Game Design and Development

CMSC 325 | 3 Credits

Course Desc: Prerequisite: CMSC 215 (or CMIS 242). A project-driven study in modern game design and development. The aim is to create interactive 2D and 3D games, implement motion and collision logic, animate characters, and integrate AI-driven behaviors. The study emphasizes debugging, iterative improvement, playtesting, and collaborative development to produce playable, engaging games.

Foundations of Programming Languages

CMSC 330 | 3 Credits

Course Desc: Prerequisite: CMSC 315 (or CMSC 350). A study of the foundational concepts of programming languages connecting theory with practical implementation. Topics include syntax and semantics, programming paradigms, lexical analysis, parsing, regular expressions, grammars, scope management, and compiler principles. Weekly coding labs and a final project apply these concepts through the implementation of parsers, interpreters, or small domain-specific languages.

Object-Oriented and Concurrent Programming

CMSC 335 | 3 Credits

Course Desc: Prerequisite: CMSC 315 (or CMSC 350). A study of object-oriented and concurrent programming using features of Java. The goal is to design, implement, test, debug, and document complex robust programs in an object-oriented language. Concepts of object-oriented programming (such as composition, classification, and polymorphism) are explored. Topics include the principles of concurrent programming (such as task synchronization, race conditions, deadlock, threads, and event-driven graphic user interface programs). Programming projects are implemented in Java. Students may receive credit for only one of the following courses: CMSC 300 or CMSC 335.

Web Programming

CMSC 340 | 3 Credits

Course Desc: Prerequisite: CMSC 115 (or CMIS 141). A study of how to develop web applications. The objective is to understand and implement networking protocols, system design, and web security. Topics include basic web architecture, core web standards (such as HTTP, HTML, and CSS), client-side scripting with JavaScript, and server-side programming with PHP.

Software Engineering Principles and Techniques

CMSC 345 | 3 Credits

Course Desc: (Formerly CMIS 330.) Prerequisite: CMSC 215 (or CMIS 242). An introduction to software engineering emphasizing foundational principles, processes, and best practices. Topics include software development methodologies, project planning, documentation, configuration management, and considerations for quality, usability, security, and ethics. Projects involve small-scale, collaborative hands-on work to reinforce principles and professional practices. Students may receive credit for only one of the following courses: CMIS 330, CMIS 388A, or CMSC 345.

Computer Graphics

CMSC 405 | 3 Credits

Course Desc: Prerequisite: CMSC 325 or CMSC 315 (or CMSC 350). A hands-on, project-based introduction to computer graphics. The goal is to develop projects that render graphic images and animate three-dimensional objects. Topics include programming in OpenGL and transforming, viewing, and modeling 2D and 3D objects.

Operating Systems

CMSC 412 | 3 Credits

Course Desc: Prerequisite: CMSC 310 (or CMIS 310) and CMSC 315. A study of the fundamental principles underlying modern operating systems. The objective is to design and implement a small-scale operating system and design a virtual memory management system. Discussion covers the essential components of a typical operating system and the interactions among them. Topics also include methods of managing processes and resources in computer systems. A programming project that implements part of an operating system is required.

Distributed Database Systems

CMSC 415 | 3 Credits

Course Desc: Prerequisite: CMSC 320 or CMIS 320. An examination of the fundamental concepts of distributed databases. Discussion covers distributed database architecture and distributed database design, as well as relevant topics of big data management and distributed NoSQL databases.

Data Engineering

CMSC 420 | 3 Credits

Course Desc: Prerequisite: CMSC 220 (or CMSC 320 or CMIS 320), IFSM 410, or IFSM 411. A study of advanced data engineering techniques. Topics include secure data pipelines, data integrity and validation, diverse data systems and platforms, and workflow analysis. Emphasis is on building reliable, maintainable, and responsible data workflows while integrating security, correctness, performance, and ethical considerations.

Mobile App Development

CMSC 425 | 3 Credits

Course Desc: Prerequisite: CMSC 215 or CMIS 242. A study of techniques for designing and developing mobile applications using the Android operating system. Topics include mobile architecture, operating systems, programming languages, user interface design, and security and privacy issues related to mobile apps.

Artificial Intelligence Systems Development

CMSC 427 | 3 Credits

Course Desc: Prerequisite: CMSC 315 (or CMSC 350) or CYOP 300 (or SDEV 300). A study of designing and implementing intelligent systems and AI applications. Topics include intelligent components, search, reasoning, optimization, knowledge representation, and machine learning. Emphasis is on creating modular AI components and applications, and evaluating AI solutions for accuracy, efficiency, and responsible, ethical behavior.

Compiler Theory and Design

CMSC 430 | 3 Credits

Course Desc: Prerequisite: CMSC 330. An examination of the formal translation of programming languages, syntax, and semantics. The goal is to write programs that are constructed using program generators. Topics include evaluation of finite-state grammars and recognizers; context free parsing techniques, such as recursive descent, precedence, LL(K), LR(K), and SLR(K); and improvement and generation of machine-independent code and syntax-directed translation schema. Programming projects that implement parts of a compiler are required.

Full-Stack Web Development

CMSC 440 | 3 Credits

Course Desc: (Formerly CMIS 440.) Prerequisites: CMSC 220 (or CMIS 320 or CMSC 320) and CMSC 340. An applied study of full stack web development, emphasizing responsive, secure, and maintainable web applications. Topics include building modular client- and server-side components, designing RESTful APIs, implementing data management solutions, applying automated testing and debugging workflows, and documenting applications.

Design and Analysis of Computer Algorithms

CMSC 451 | 3 Credits

Course Desc: Prerequisites: CMSC 150 and CMSC 315 (or CMIS 350). A presentation of fundamental techniques for designing and analyzing computer algorithms. The aim is to apply big-O estimates of algorithms and proof-of-correctness techniques and to design algorithms. Basic methods include divide-and-conquer techniques, search and traversal techniques, dynamic programming, greedy methods, and induction. Programming projects are included.

Image and Signal Processing

CMSC 465 | 3 Credits

Course Desc: Prerequisites: MATH 141 and CMSC 315 (or CMSC 350). A project-driven study of image and signal processing. The goal is to apply spectral analysis techniques to analyze time series data for the purpose of recognizing and classifying signals and to apply image segmentation, representation, and description techniques to recognize and classify objects. Topics include discrete Fourier transforms, fast Fourier transforms, sampling and filtering, and image transformations and enhancements.

Computer Science Capstone

CMSC 495 | 3 Credits

Course Desc: Prerequisite(s): CMSC 315 (or CMSC 350) and CMSC 345. A project-driven study emphasizing the application of computing concepts, software development practices, and critical thinking to create a functional software system. Projects focus on collaboration, iterative and modular development, automated workflows, and peer feedback, while leveraging contemporary tools, frameworks, and innovative computing practices.

To check other courses, please check our course information page.