CMPE 220 Computer Organization
Credits: 4
Description: Introduces organization and architecture of computer systems from the standard von Neumann model to more recent architectural concepts. Internal structure and organization of a computer leads to significant differences in performance and functionality, giving rise to an extraordinary range of computing devices from hand-held computer to large-scale, high performance machines. To gain a better understanding of exactly how a computer functions, students will write programs in a common assembly language.
Prerequisites: CSC 111/ENGR 120 for level with C or better AND MAT 225 with C or better or currently taking MAT 225
CMPE 320 Operating Systems
Credits: 4
Description: An operating system provides an abstract interface with which programmers can control hardware. The study of this area includes both the use of operating systems (externals) and their design and implementation (internals). This course will include laboratories to simulate or experiment with operating system concepts. Topics include overview of operating systems, processes and concurrency, memory management, scheduling, input/output and file systems, system performance evaluation, ethics, and security.
Prerequisites: CMPE 220 with C or better
CMSC 110 Computer Science I
Credits: 4
Description: An introduction to computer programming from an object-oriented perspective. Students will complete several programs with an emphasis placed on good software engineering principles and development of good programming skills. Students will implement complete programs using an object-oriented programming language and development environment. Topics include: fundamental programming techniques including algorithm design, documentation, style, and debugging; fundamental program constructs including simple data types, and control structures; fundamental object oriented techniques including classes, abstraction, polymorphism, inheritance, and encapsulation; and fundamental software engineering principles.
Prerequisites: Math placement level 4 or higher.
CMSC 111 Computer Science II
Credits: 4
Description: Students will reinforce their proficiency with core programming techniques by developing more challenging programs than in CS1. Students will apply new techniques such as pointers, structures and unions to create advanced programs and solutions. Students will also need to improve their solutions to enhance efficiency and soundness. Topics include intermediate programming techniques; using advanced data types including multi-dimensional arrays, queues, stacks, linked lists, recursion, sorting and searching algorithms.
Prerequisites: CMSC 110 with C or better.
CMSC 310 Design and Analysis of Algorithms
Credits: 4
Description: Examines various techniques for designing algorithms and analyzing their efficiencies, and examines and compares their efficiency of execution. Studies the theoretical foundations for analysis of algorithms and the ramifications of design strategies on efficiency.
Prerequisites: CMSC 111/ENGR 120 with C or better and MATH 225 with C or better
CMSC 361 Video Game Programming
Credits: 4
Description: This course will look at the key concepts needed to build 2D and 3D video games using an existing game engine. The course will look at asset management, animation, collision detection physics, and user input. Additionally, It will look at some key design patterns related to game programming.
Prerequisites: SWEN 200 with C or better.
CMSC 403 Machine Learning
Credits: 4
Description: This introductory course gives an overview of machine learning. This is a wide ranging field including topics such as: classification, linear regression, Principal Component Analysis (PCA), neural networks, bagging and boosting, support vector machines, hidden Markov models, Bayesian networks, Q-learning, reinforcement learning.
Prerequisites: MATH 217 with D or better and CMSC 310 with D or better.
CMSC 410 Theoretical Foundations of Computer Science
Credits: 3
Description: Topics include finite automata, regular languages, regular expressions, and regular grammars; pushdown automata and context-free languages; Turing machines; Church-Turing Thesis; the Halting Problem; undecidability; classes of languages, including the Chomsky hierarchy and the classes P, NP, and NP-Complete. Proof techniques for showing language (non)membership in a class.
Prerequisites: CMSC 310 with C or better.
CMSC 431 Computer Networks
Credits: 4
Description: Studies protocol suites, emphasizing the TCP/IP 4-layer model. Topics included are network addresses, sub netting, client/server network programming via the sockets API, network utilities, architecture of packets, routing, fragmentation, connection and termination, connection-less applications, data flow, and an examination of necessary protocols at the link layer, particularly Ethernet. Other topics may include FDDI, wireless, ATM, congestion control, and network security.
Prerequisites: CMPE 220 or SWEN 200 with a C or better or GPRE level 1
CMSC 462 Artificial Intelligence
Credits: 4
Description: Overview of artificial intelligence. Emphasis on basic tools of AI, search and knowledge representation, and their application to a variety of AI problems. Search methods include depth-first, breadth-first, and AI algorithms; knowledge representation schemes include propositional and predicate logics, semantic nets and frames, and scripts. Planning using a STRIPS-like planner will also be addressed. Areas that may be addressed include natural language processing, computer vision, robotics, expert systems, and machine learning.
Prerequisites: SWEN 200 with C or better, GPRE level 1.
CMSC 471 Database Management Systems
Credits: 3
Description: Detailed examination of theory and practical issues underlying the design, development, and use of a DBMS. Topics include characteristics of a well-designed database; high-level representation of an application using ER modeling; functional dependency theory, normalization, and their application toward a well-designed database; abstract query languages; query languages; concurrency; integrity; security. Advanced topics may be included (e.g., distributed databases; object-oriented databases). Theory to practice is applied in a number of projects involving the design, creation, and use of a database.
Prerequisites: SWEN 200 with C or better
CMSC 498 Research Methods
Credits: 3
Description: Students will learn basic research strategies including conducting literature reviews, designing experiments, defining hypotheses, and writing proposals. The course will include topics including finding and evaluating sources of information, defining topics, developing and supporting a hypotheses, and acceptable research and experimental practices. Students will develop a proposal for a research project to be completed in CSC 499. Graduate students are not allowed to take this course.
Prerequisites: CMSC 310 and co-req of MATH 117 or MATH 217 or MATH 375.
CMSC 499 Senior Research and Development
Credits: 3
Description: Students will independently, but under the direction of the instructor of record, execute the proposal developed in CSC 498. Students will conduct the experiments outlined in their testing / implementation plan. Students will then analyze the results and determine if their hypothesis was supported or not. The goal of this course is to gain experience with a formal development process and understand how the scientific method, mathematical reasoning, logic, and algorithmic thinking will generate concrete answers to problems. Pre-requisite: Completion of CSC 498 with a C or better. Graduate students are not allowed to take this course
Prerequisites: PHIL 105 and CMSC 498 with C or better.
SWEN 200 Design Patterns
Credits: 4
Description: Provides an advanced study of the concepts of object-oriented programming, with an emphasis on applying those concepts to software development. Many object design patters have emerged as proven ways to structure object-oriented solutions to a wide range of key problems. This course provides hands-on experience with using object design patterns to solve a number of problems that recur in computer science. Students will develop a number of medium to large programs individually.
Prerequisites: CMSC 111 or ENGR 120 with C or better.