Academic Catalog
2023-2024

Computer Science (CS)

CS-100  Introduction to Programming & Computation    4 Credits

Prerequisites: None
This course provides an introduction to computer program development for students with little to no programming experience. Covers the fundamental constructs and patterns present in all programming languages including: variables and expressions, data and control structures, algorithms, debugging, program design, and documentation. Introduces algorithmic problem solving, computational thinking, and Python programming with applications in science and engineering. Introduces key concepts that will help you to learn how to be effective in any other language including: MATLAB, C, Java, Javascript or any other language that you might encounter. The course will have traditional weekly assignments as well as a project that will be based on the students’ program of interest. A project bank will be available from which students can select their project built from contributions from a variety of disciplines.
Lecture: 3, Lab 2, Other 0

CS-101  Computing & Algorithms I    4 Credits

Prerequisites: None
An introduction to algorithmic problem solving, with emphasis on elementary program and software engineering techniques. Syntax and semantics of a modern programming language; programming and debugging at the file level; true object-orientation; Strings, arrays, sorting, and inheritance.
Lecture: 0, Lab 0, Other 6

CS-102  Computing & Algorithms II    4 Credits

Prerequisites: CS-101
A second course in algorithmic problem solving. Recursion, abstract data types, dynamic data structures, comparison-based sorting, elementary algorithm analysis, design of software projects of moderate size, and continuing development of programming skills.
Lecture: 3, Lab 2, Other 0

CS-203  Computing & Algorithms III    4 Credits

Prerequisites: CS-102 and CS-211
Minimum Class Standing: Sophomore
The design and analysis of advanced data structures and algorithms are covered. Topics include: algorithm design and analysis techniques, advanced data structures, advanced sorting, and applications to various problem domains.
Lecture: 3, Lab 2, Other 0

CS-211  Discrete Mathematics    4 Credits

Prerequisites: MATH-101 or MATH-101X or MATH-101H
Propositional and first-order logic; logical equivalence and inference are covered. Course topics include: proof techniques, mathematical induction and principle of diagonalization; set operations, relations, functions; introduction to graphs and trees and their applications to computer science; lattice structures and Boolean algebras; and truth tables and minimization of Boolean expressions.
Lecture: 4, Lab 0, Other 0

CS-231  Programming Language Paradigms    4 Credits

Prerequisites: CS-102
This course examines imperative and functional programming paradigms. Imperative paradigm topics include: data representation, dynamic structures, parameter passing, memory management, and I/O. Functional paradigm topics include: lists, first class and higher order functions, lazy evaluations, and infinite data structures.
Lecture: 3, Lab 2, Other 0

CS-300  The Computing Professional    4 Credits

Prerequisites: COMM-101 and (CS-102 or CE-210)
Minimum Class Standing: Sophomore
An examination of the profession of computing from historical and ethical perspectives. Overview of the history of computing, from the earliest computational devices and theoretical foundations to modern developments. Discussion of the social impact of computing on society and the ethical implications for computing professionals, including analysis of case studies.
Lecture: 4, Lab 0, Other 0

CS-304  User Experience and Interface Design    4 Credits

Prerequisites: CS-101 or ECE-101 or IME-211
This course will study the design and art involved in the User Experience and User Interface development process. Emphasizes hands-on development with a focus on Digital User Experience design and Interfaces using standard industry tools. Students will learn the process of research, user identification, empathize with end users, design from user requirements, and how to test their designs. Students will evaluate everything from popular website UX/UI, automotive displays, the User experience design process for physical products, and the challenging task of designing for interactive media. Students will go through the entire process of UX design from ideation to delivery of designs through a series of weekly project-based deliverables. Students develop multiple UX/UI solutions.
Lecture: 4, Lab 0, Other 0

CS-312  Theory of Computation    4 Credits

Prerequisites: CS-102 and CS-211
Minimum Class Standing: Sophomore
Topics covered in this course include: regular languages and grammars; finite-state machines and transducers; relationships between finite-state automata and regular languages; context-free languages and grammars; language recognition with stack machines and parsers; properties of formal languages; computability and undecidability; introduction to computational complexity.
Lecture: 4, Lab 0, Other 0

CS-320  Computer Graphics    4 Credits

Prerequisites: (MATH-101 or MATH-101X) and CS-102
Minimum Class Standing: Sophomore
This course is an introduction to computer graphics for game engines. This course will introduce shader programming languages, lighting, shadows, surface rendering, compute shaders, ray tracing, and sphere tracking. Providing a solid foundation to develop custom graphics and optimize existing graphics in the modern game engine Unity. Students will develop a series of projects to practice and solidify their knowledge.
Lecture: 4, Lab 0, Other 0

CS-341  Web Software Tools    4 Credits

Prerequisites: CS-102
Terms Offered: Winter/Spring, alternate years
The skills and tools needed to create dynamic web-based applications using World Wide Web programming tools are covered in this course. Topics include: various markup languages, several scripting languages, web services, web servers and relational databases.
Lecture: 4, Lab 0, Other 0

CS-351  Cloud Computing    4 Credits

Prerequisites: CS-102
A comprehensive overview of cloud computing and its application such as big data and machine learning. Current technologies that comprise the concept of cloud computing are discussed. Exploration of major Cloud frameworks and their applications.
Lecture: 3, Lab 2, Other 0

CS-355  Introduction to Cybersecurity    4 Credits

Prerequisites: CS-101 or ECE-101 or IME-211
This course provides an overview of different aspects of cyber security. Students will be exposed to the spectrum of security activities, methodologies, attacks, hacking and defense mechanisms. Topics include: cybersecurity overview, security policy, application security, computer network attack and defense, data hiding, wireless security, cyber behavior analysis, authentication, access control, cryptography, cyber threats and their defense.
Lecture: 4, Lab 0, Other 0

CS-381  Ethical Hacking    4 Credits

Prerequisites: CS-101 or ECE-101 or IME-211
The course focuses on ethical hacking in a corporate environment and the ethics of attacking systems. A clear distinction will be presented between ethical and criminal hacking. Students will study various components & tools to secure systems from attacks by completing hands-on labs. The course will review various frames and tools to prevent unauthorized access through software and physical controls. It’ll consist of various modules such as MITRE Frameworks (Concepts, Red team MITRE Attack, Blue team Detect, Purple team…), OSINT (Search Engines, Website/DNS/Wireless/Email… OSINT), Network Pen-testing (Layer 2 & 3 attacks, monitoring attacks, DNS attacks, Firewall), and Client Pen-testing (Server & Client-Side Exploits, Privilege Escalation, Remote Sniffing and Host based DNS Poisoning).
Lecture: 3, Lab 2, Other 0

CS-385  Elements of Game Design    4 Credits

Prerequisites: CS-102
This course will study the technology, science, and art involved in the creation and design of computer games. The course will emphasize the hands-on development of games and consider a variety of software technologies relevant to games. Throughout the course, students will learn the fundamentals of Narrative Design, Systems Design, and Level Design. Students will develop a strong foundation in the three primary design disciplines and be able to apply their knowledge directly to the game development process.
Lecture: 4, Lab 0, Other 0

CS-391  CS Special Topics    4 Credits

Prerequisites: None
Lecture: 4, Lab 0, Other 0

CS-415  Cryptography    4 Credits

Prerequisites: CS-102 and CS-211
Minimum Class Standing: Junior
A study of modern data security. Mathematical foundations of cryptography. Classical cryptographic systems and computer attacks on these systems. Cryptographic security over unsecure communication paths: cryptographic protocols, oblivious transfers, proofs of identity, signature schemes. Modern cryptographic systems: data encryption standards, public-key systems, key generation and management. External considerations are presented and discussed: security organizations role in security, privacy considerations, import/export issues.
Lecture: 4, Lab 0, Other 0

CS-420  Virtual Reality    4 Credits

Prerequisites: CS-102
This course covers the fundamentals of virtual reality (VR), also introducing extended reality (XR), augmented reality (AR), and mixed reality (MR). Topics include software development using a modern VR engine, stereo rendering, head-mounted displays, haptic feedback, motion tracking, etc.
Lecture: 3, Lab 2, Other 0

CS-425  Parallel Programming and Algorithms    4 Credits

Prerequisites: CS-231
Parallel computing has long played a vital role in addressing the performance demands of high-end engineering and scientific applications. Over the last decade, parallel computing has become important to a much broader audience as nearly all computer systems are being built using chips with multiple processor cores. The goal of CS-425 is to introduce students to the foundations of parallel computing including the principles of parallel algorithm design, analytical modeling of parallel programs, programming models for shared - and distributed - memory systems, parallel computer architectures, along with numerical and non-numerical algorithms for parallel systems. The course will include material on emerging multicore hardware, shared-memory programming models, message passing programming models used for cluster computing, data-parallel programming models for GPUs, and problem-solving on large-scale clusters using MapReduce. A key aim of the course is for students to gain a hands-on knowledge of the fundamentals of parallel programming by writing efficient parallel programs using some of the programming models learned in class. There will be different projects in CS-425 and CS-625. Students may not receive credit for both CS-425 and CS-625.
Lecture: 4, Lab 0, Other 0

CS-431  Compiler Design and Construction    4 Credits

Prerequisites: CS-102
Minimum Class Standing: Junior
A study of compiler design techniques; scanning, parsing, error recovery and intermediate code generation and optimization; tools for compiler construction, including scanner generators and compiler-compilers. Construction of a working compiler front-end.
Lecture: 4, Lab 0, Other 0

CS-441  Foundations of Data Science    4 Credits

Prerequisites: CS-102
The concepts, principles, issues and techniques for big data and cloud computing are introduced in this course. This course will provide a foundation in data science based on data curation and statistical analysis. The primary goal of this course is to introduce data analysis concepts and techniques that facilitate making decisions from a rich data set. Students will investigate big data concepts, metadata creation, interpretation, and basics of information visualization.
Lecture: 4, Lab 0, Other 0

CS-451  Operating Systems    4 Credits

Prerequisites: CS-231
Operating system function and implementation; process and thread management, CPU scheduling and synchronization; real and virtual memory management, paging and page replacement algorithms, Case studies of historical and modern operating systems.
Lecture: 3, Lab 2, Other 0

CS-457  Wireless and Mobile Security    4 Credits

Prerequisites: CS-102
Terms Offered: Summer/Fall, alternate years
This course addresses the challenges of providing secure communication and network services in wireless and mobile environments. The focus of the course will be purely wireless and mobile environments such as wireless ad hoc, mesh, and sensor networks, as well as smartphones and mobile telecommunication systems.
Lecture: 4, Lab 0, Other 0

CS-458  Digital Forensics    4 Credits

Prerequisites: CS-102
This course will introduce students to the fundamentals of computer and network forensics and cyber-crime scene analysis including laws, regulations, international standards, and formal methodology for conducting computer forensic investigations. Emphasis will be placed on such advanced computer forensic science capabilities such as target hardening and software, tools for data duplication, recovery and analysis, and development of pre-search or on-scene computer investigative techniques.
Lecture: 3, Lab 2, Other 0

CS-461  Database Systems    4 Credits

Prerequisites: CS-102
Minimum Class Standing: Junior
Database design and implementation, entity-relationship model, relational model, object-oriented model, logical rules, relational algebra and logic, relational query languages, physical data organization, design theory for databases, distributed and Web-based databases.
Lecture: 4, Lab 0, Other 0

CS-465  Information Retrieval and Data Mining    4 Credits

Prerequisites: CS-102
Minimum Class Standing: Junior
Information retrieval and data mining topics, including information storage and retrieval, file structures, precision and recall, probabilistic retrieval, search strategies, automatic classification, automatic text analysis, decision trees, genetic algorithms, nearest neighbor method, and rule induction.
Lecture: 4, Lab 0, Other 0

CS-471  Software Engineering    4 Credits

Prerequisites: CS-102
Minimum Class Standing: Junior
Approaches and techniques for designing and developing large software systems. Software life cycles -- object-oriented and agile design techniques are emphasized. Requirements, specification, design, and documentation through design patterns and modeling languages. Software quality assurance, validation and verification. Security features designed into system. Project team organization and management. Students will work in teams on a substantial software project.
Lecture: 4, Lab 0, Other 0

CS-481  Artificial Intelligence    4 Credits

Prerequisites: CS-102
Topics covered include: Types of intelligence, knowledge representation, cognitive models. Heuristic and algorithmic techniques in problem solving, knowledge representation, reasoning under uncertainty and learning. Selected topics from natural language processing, vision processing, game playing, pattern recognition, speech recognition, robots, and other current topics in artificial intelligence. There will be different projects in CS-481 and CS-681.
Lecture: 4, Lab 0, Other 0

CS-482  Machine Learning    4 Credits

Prerequisites: CS-102
Minimum Class Standing: Junior
This course provides an introduction to machine learning. Topics include: supervised learning including generative, discriminative learning, parametric and non-parametric learning, neural networks, support vector machines; unsupervised learning including clustering, dimensionality reduction, kernel methods, learning theory bias/variance trade-offs, VC theory, large margins, reinforcement learning. The course will also include applications of machine learning to big data.
Lecture: 4, Lab 0, Other 0

CS-483  Algorithms for Deep Learning    4 Credits

Prerequisites: CS-102
Minimum Class Standing: Junior
This course provides students with the knowledge to implement the key algorithms related to deep learning. Deep learning is a branch of machine learning concerned with the development and application of modern neural networks. Deep learning is behind many recent advances in AI, including Siri’s speech recognition, Facebook’s tag suggestions, etc. Students will cover a range of topics including the foundational algorithms and data structures of neural networks, belief networks, generative learning models, convolutional and recurrent network structures, as well as overcoming issues with training and security. Graduate students will go into greater depth on certain topics and have additional readings and homework assignments, and a more complex project.
Lecture: 4, Lab 0, Other 0

CS-485  Advanced Game Development    4 Credits

Prerequisites: CS-102
This course covers advanced game development techniques to create interactive 3D video games using modern game engines. Topics include game artificial intelligence, collision detection, real-time physics, procedural generation, animation, visual effects, combat systems, etc.
Lecture: 3, Lab 2, Other 0

CS-498  Computer Science Study Abroad    4 Credits

Prerequisites: None
Advanced Topics in the Computer Science. This is a transfer course taken as part of Kettering's Study Abroad Program.
Lecture: 4, Lab 0, Other 0

CS-499  Computer Science Independent Study    4 Credits

Prerequisites: None
Terms Offered: As Decided
This course facilitates depth and breadth of study in a particular area of Computer Science. Students must request and receive approval of the independent study topic with the instructor.
Lecture: 4, Lab 2, Other 0