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 Problem-Solving and Algorithm Design
CMSC 105 | 3 Credits
Course Desc: (Formerly CMIS 102.) A study of techniques for finding solutions to problems through structured programming and stepwise refinement. The objective is to design programs using pseudocode and implement them in an appropriate programming language. Hands-on practice in debugging, testing, and documenting is provided. Topics include principles of programming, the logic of constructing a computer program, and the practical aspects of integrating program modules into a cohesive application. Algorithms are used to demonstrate programming as an approach to problem-solving. Students may receive credit for only one of the following courses: CMIS 102,CMIS 102A, CMSC 101, or CMSC 105.
Introductory Programming
CMSC 115 | 3 Credits
Course Desc: (Formerly CMIS 141.) Prerequisite: CMSC 105 (or CMIS 102). A study of structured and object-oriented programming using the Java language. The goal is to design, implement, test, debug, and document Java programs, using appropriate development tools. Projects require the use of algorithms, simple data structures, and object-oriented concepts. 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: Prerequisite or corequisite: MATH 140. A survey of fundamental mathematical concepts relevant to computer science. The objective is to address problems in computer science. Proof techniques presented are those used for modeling and solving problems in computer science. Discussion covers functions, relations, infinite sets, and propositional logic. Topics also include graphs and trees, as well as selected applications. Students may receive credit for only one of the following courses: CMSC 150 or CMSC 250.
Intermediate Programming
CMSC 215 | 3 Credits
Course Desc: (Formerly CMIS 242.) Prerequisite: CMSC 115 (or CMIS 141). Further study of the Java programming language. The objective is to design, implement, test, debug, and document Java programs, using appropriate development tools. Topics include object-oriented design, event driven programming, exceptions, recursion, arrays, and data structures. Students may receive credit for only one of the following courses: CMSC 215 or CMIS 242.
Artificial Intelligence Applications
CMSC 307 | 3 Credits
Course Desc: (No programming or math background required.) An interactive, hands-on study of current artificial intelligence (AI) applications spanning multiple disciplines and domains, including business, science, communications, and computing. The goal is to use datasets with AI and machine learning applications from leading cloud vendors, including Amazon and Microsoft. Projects and laboratory exercises demonstrate how AI can be used to solve problems across a wide variety of disciplines.
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). A study of user-defined data structures and object-oriented design in computer science. The aim is to develop secure Java programs. Topics include linked lists, stacks, queues, arrays, maps, vectors, and trees. Algorithms that perform sorting, searching, and recursion are discussed and analyzed. 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 of the theory and practice of game design and development. The aim is to build realistic graphical 3D worlds, animate characters, and add special effects to games. Discussion covers critical mathematical concepts and real-time game physics. Projects include collaborative development of interactive games.
Advanced Programming Languages
CMSC 330 | 3 Credits
Course Desc: Prerequisite: CMSC 315 (or CMSC 350). A comparative study of programming languages. The aim is to write safe and secure computer programs. Topics include the syntax and semantics of programming languages and run-time support required for various programming languages. Programming projects using selected languages are required.
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 115 (or CMIS 141). A study of software engineering from initial concept through design, development, testing, and maintenance of the product. Discussion covers software development life-cycle models. The goal is to analyze, customize, and document multiple processes to solve information technology problems. Topics include configuration management, quality, validation and verification, security, human factors, and organizational structures. 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: CMIS 310 or CMSC 311. 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.
Advanced Relational Database Concepts and Applications
CMSC 420 | 3 Credits
Course Desc: Prerequisite: CMSC 320 (or CMIS 320), IFSM 410, or IFSM 411. A comprehensive study of the features and techniques of relational database management appropriate to the advanced end user, database designer, or database administrator. The goal is to complete hands-on work using an industry-standard enterprise relational database management system. Topics include basic database administration functions, advanced SQL and complex data types, stored procedures, user-defined functions, triggers, and data warehousing. Students may receive credit for only one of the following courses: CMIS 420, CMSC 420, IFSM 420, or IFSM 498I.
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 Foundations
CMSC 427 | 3 Credits
Course Desc: Prerequisite: CMSC 315 (or CMSC 350) or CYOP 300 (or SDEV 300). A study of the theoretical foundations and practical applications of artificial intelligence. The objective is to develop algorithms and systems to demonstrate intelligent behavior. Topics include intelligent agents, searching algorithms, knowledge representation, probability, logic, and learning.
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.
Advanced Programming in Java
CMSC 440 | 3 Credits
Course Desc: (Formerly CMIS 440.) Prerequisites: CMSC 215 (or CMIS 242) and CMSC 320 (or CMIS 320). An exploration of advanced Java programming, using the Java Enterprise edition. The objective is to analyze, design, develop, test, deploy, and document small- to medium-scale web applications. Hands-on projects in Java server pages, servlets, and Java database connectivity are included. Students may receive credit for only one of the following courses: CMIS 440, CMIS 498A, or CMSC 440.
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.
Capstone in Computer Science
CMSC 495 | 3 Credits
Course Desc: Prerequisite(s): Either CMSC 330 and CMSC 335, CMSC 320 (or CMIS 320) and CMSC 345, or SDEV 425. An overview of computer technologies, with an emphasis on integration of concepts, practical application, and critical thinking. The goal is to research, plan, conduct, and complete collaborative computer-related projects in compliance with schedule deadlines. Analysis covers innovative and emerging issues in computer science. Assignments include working in teams throughout the analysis, design, development, implementation, testing, and documentation phases of the projects, including periodic peer reviews.
To check other courses, please check our course information page.