Course Descriptions

Below are course descriptions of the graduate computer science classes that are likely to be offered during the 2015-16 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.

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 environment, safety, honesty, organizational communication, quality control, and product liability. Same as ENGR-5003.

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.

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.

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.

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.

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.

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.

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.

5333 ADVANCED DATABASE SYSTEMS

Prerequisite: CMSC-4323 or 5323.

This course will investigate new database technologies. Topics will include managing and using large skill data sets, high-velocity transaction processing, stream processing, real-time analytics, and high-volume data processing. The discussions will focus on several real-world application domains, such as internet advertising, healthcare, and social network analysis.

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 Hadooop and other projects in the Hadoop ecosystem to effectively manage big data tasks, as well as delivering results to human observers. Topics include data processing, data visualization, and distributed data processing.

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.

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.

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: PATTERS OF ENTERPRISE SYSTEMS

Prerequisite: CMSC-5613.

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-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

Prerequisite: CMSC-5713.

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

Prerequisite: CMSC-5613.

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

Prerequisite: CMSC-5733.

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

Prerequisite: CMSC-2233.

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

Prerequisite: CMSC-5763.

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-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.