Object-Oriented and Concurrent Programming
CMSC 335 | 3 Credits
Course Desc: Prerequisite: CMSC 230 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.
Current Trends and Projects in Computer Science
CMSC 495 | 3 Credits
Course Desc: (Intended as a final, capstone course to be taken in a student's last 9 credits.) Prerequisite(s): Either CMSC 330 and CMSC 335, CMIS 320 and CMIS 330, 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.
CMSC 405 | 3 Credits
Course Desc: Prerequisite: CMSC 325 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 2-D and 3-D objects.
Advanced Programming Languages
CMSC 330 | 3 Credits
Course Desc: Prerequisite: CMSC 230 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.
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.
Artificial Intelligence Foundations
CMSC 427 | 3 Credits
Course Desc: Prerequisite 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.
Game Design and Development
CMSC 325 | 3 Credits
Course Desc: Prerequisite: CMSC 230 or CMIS 242. A project-driven study of the theory and practice of game design and development. The aim is to build realistic graphical 3-D 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.
Compiler Theory and Design
CMSC 430 | 3 Credits
Course Desc: Prerequisites: CMSC 330 and programming experience in C or C++. 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.
Design and Analysis of Computer Algorithms
CMSC 451 | 3 Credits
Course Desc: Prerequisites: CMSC 150 and CMSC 350 (or CMSC 230). 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 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.
To check other courses, please check our course information page.