Below are course descriptions of the graduate computer science classes that are likely to be offered during the 2018-2019 academic year. Please note that class offerings can and do change, so courses listed below are not guaranteed to be offered. At the same time, new courses that are not listed below may be offered in addition to or instead of these courses.
CMSC-5003: FOUNDATIONS OF TECHNOLOGY ETHICS AND VALUES
Theories of engineering and computer science ethics and values. Ethical theory from a Christian viewpoint. Impact of technology on society. Individual options and obligations for action. Case studies will be used to study a range of issues including
CMSC-5013: DATA COMMUNICATIONS AND NETWORKING
A study of the concepts and terminology of data communications, network design, and distributed information systems. Topics include transmission service and equipment characteristics, protocols, data communications software, and federal regulatory policy. This course is normally offered in the fall semester.
CMSC-5113: SOFTWARE AND NETWORK ENGINEERING
A study of advanced computer network systems design issues. Examination of the prominent protocols and standards for wired and wireless local area networks and the wireless internet. Same as CENG-5113.
CMSC-5213: COMPUTER NETWORKS
A course covering computer and data communications and computer networks. Strong emphasis on Layer 2 - Layer 4 internet protocols, including Ethernet IP, TCP, and UDP. The course includes the use of network analyzers to enable hands-on network protocol experience. Same as CENG-5213.
CMSC-5223: COMPUTER SIMULATION
An introduction to the application of programming to the design and implementation of computer simulations. Topics include simulation languages and the application of stochastic processes to simulation theory. This course is normally offered in the spring semester of even-numbered years. Students cannot receive credit for both CMSC-4223 and CMSC-5223.
CMSC-5233: MOBILE APPLICATION DEVELOPMENT
An introduction to mobile application software development. In this course, the student will learn to develop mobile apps. Topics will include mobile platforms and mobile application development tools. This course is normally offered in the spring semester of even-numbered years. Students cannot receive credit for both CMSC-4233 and CMSC- 5233.
CMSC-5313: HUMAN COMPUTER INTERACTION
An introduction to user interfaced design and user experience. Topics include HCI concepts and principles, usability, HCI evaluation, HCI design, interaction devices. This course is normally offered in the fall semester of odd-numbered years. Students cannot receive credit for both CMSC-4113 and CMSC-5313.
CMSC-5323: DATABASE SYSTEMS
An introduction to the application of programming to the design and implementation of computer simulations. Topics include simulation languages and the application of stochastic processes to simulation theory. This course is normally offered in the spring semester of even-numbered years. Students cannot receive credit for both CMSC-4323 and CMSC-5323.
CMSC-5333: ADVANCED DATABASE SYSTEMS
Prerequisite: CMSC-4323 or 5323.
This course will investigate new database technologies. Topics will include managing and
CMSC-5343: ALGORITHM ANALYSIS
An introduction to the analysis and design of algorithms. Topics include algorithm performance, verification of correctness, and application of analysis technique to a variety of simple and complex algorithms.
CMSC-5353: BIG DATA MANAGEMENT
Prerequisite: CMSC 5333
A course on the practical implementation of big data technology. Students will learn to use
CMSC-5363: DATA SCIENCE PROJECT I
A Project Oriented class where the student will use data science principles, knowledge and skills to solve a problem as a team Topics include Hadoop and related technologies, and data science processes.
CMSC-5373: DATA SCIENCE PROJECT II
Prerequisite: Data Science Project I (CMSC 5363)
A Project Oriented class where the student will use data science principles, knowledge, and skills to solve a problem on their own. Topics include Hadoop and related technologies, and data science processes.
CMSC-5413: OPERATING SYSTEMS
Examination of the major features of an operating system and its interaction with the hardware at the register level. Topics include memory management, job scheduling, and multi-programming. Students cannot receive credit for both CMSC-4413 and CMSC-5413.
CMSC-5423: COMPUTER GRAPHICS
An introduction to the fundamental techniques of computer graphics. Topics include two and three-dimensional graphing, hidden surface algorithms, animation, and applications of graphics. This course is normally offered in the fall semester of odd-numbered years. Students cannot receive credit for both CMSC-4423 and CMSC-5423.
CMSC-5433: COMPILER CONSTRUCTION
An introduction to compiler construction. Topics will include lexical analysis, syntax analysis, intermediate code generation, runtime environments, code generation, and optimization.
CMSC-5513: PROGRAMMING LANGUAGES
Study of the organization of programming languages. Topics include data types, sequence control, data control, and operating environment considerations. Several high-level languages will be studied. Students cannot receive credit for both CMSC-4513 and CMSC-5513.
CMSC-5523: INFORMATION SYSTEMS SECURITY
An introduction to information system security. Topics include cryptography, access control, protocols, and software security. Students cannot receive credit for both CMSC- 4523 and CMSC-5523.
CMSC-5613: OBJECT ORIENTED SOFTWARE ENGINEERING
An introductory software engineering course for students who can program in either C++ or Java. Since the tools and techniques now widely available are for Java, the course would begin by teaching C++ programmers the simplifications that led to Java (no multiple inheritances, no manual storage management, and no operator overloading). The goal of the course would be to prepare the programmer to be software engineering and to begin the study of software architecture. Same as CENG-5613.
CMSC-5623: SOFTWARE ENGINEERING FOR TRUSTWORTHY SOFTWARE
This course explores the technologies and methodologies underlying a new robust software design model (RSDM) for software development based on successful methods used in hardware design and development. These include cost of software quality (CoSQ), the analytic hierarchy process (AHP), inventive problem solving (TRIZ), failure mode effects analysis (FMEA), quality function deployment (QFD), and Taguchi Methods, including orthogonal matrix methods. The overall design approach is to eliminate software problems as far upstream in the development process as possible, rather than finding and fixing bugs downstream. The course is intended for the software architect or software engineer or the programmer or student wishing to progress into software design. Same as CENG-5623.
CMSC-5633: PATTERNS OF ENTERPRISE SYSTEMS
This course will investigate the organization of large enterprise systems. Topics include system component layering, domain logic, relational database mapping, web presentation, concurrency, and distribution strategies.
CMSC-5643: NETWORK SECURITY WITH LAB
This course covers cloud computing architecture and cloud security concepts including access control and management, governance, logging, and encryption methods. It also covers security-related compliance protocols and risk management strategies, as well as procedures related to auditing cloud security infrastructure. Students will have hands-on experience designing solutions for AWS cloud-based platforms and operations that maintain data availability while protecting the confidentiality and integrity of information. This course prepares students for the certified cloud security professional (ISC2 CCSP) certification exam.
CMSC-5713: ARTIFICIAL INTELLIGENCE
An introduction to the study of artificial intelligence. Topics include problem-solving using state-space and problem reduction techniques, search methods, game playing, and predicate calculus. This course is normally offered in the spring semester of even-numbered years. Students cannot receive credit for both CMSC-4713 and CMSC-5713.
CMSC-5723: MACHINE LEARNING
This course will investigate advanced artificial intelligence problems and algorithms. Topics include knowledge, machine learning, perceptions, and natural language processing.
CMSC-5733: SOFTWARE ENGINEERING PROJECTS I
A project-oriented class where the student will build software systems using software engineering processes. Topics include software tools, software teams, software engineering practices, software engineering design artifacts, software development, and testing.
CMSC-5743: SOFTWARE ENGINEERING PROJECTS II
A project-oriented class where the student will build a software system on their own using software engineering processes. Topics include software tools, software teams, and software engineering.
CMSC-5753: INTELLIGENT SYSTEMS
A course in the use of artificial intelligence to solve problems. Students will learn how to make use of machine reasoning and search to complete tasks from basic spatial reasoning to game playing. Topics include logic programming, intelligent search, and reasoning with uncertainty.
CMSC-5763: ARTIFICIAL INTELLIGENCE PROJECT I
A project-oriented class where the student will use artificial intelligence principles, knowledge, skills, and technologies to solve a problem as a team. Topics include machine learning and related technologies, artificial intelligence, and software development processes.
CMSC-5773: ARTIFICIAL INTELLIGENCE PROJECT II
A project-oriented class where the student will use artificial intelligence principles, knowledge, skills, and technologies to solve a problem on their own. Topics include machine learning and related technologies, artificial intelligence, and software development processes.
CMSC-5813: PARALLEL PROGRAMMING
This is an introductory course in parallel programming for upper-division undergraduate and graduate students who have already learned to program in C, C++, Java, or C#. The goal of the course will be to equip computer science students to be able to program multi-core computers and parallel processors generally, for scientific, engineering, and business applications.
CMSC-5901: PRACTICUM FOR COMPUTER SCIENCE
On the job experience is a valuable way for students majoring in computer science to practice and improve their skills. Working with real world problems enhances the theoretical curriculum we offer and gives students a new perspective on concepts they have been taught. Enrollment in this course will be under the supervision of an individual computer science professor, who will work with the student’s supervisor. A journal or summary paper of the internship experience will be required at the conclusion of the employment period. A 12-week practicum at 20 hours per week will correspond to one hour of credit. Prior permission of the computer science department is necessary for enrollment. 1 credit hour.