Courses in Computer Science (CS)

CS100. Internet History, Technology, and Security (3).
This course will explain the Internet and how it works. It introduces students to the important technological issues currently facing society. Topics include history of Internet including commercialization and growth, computer generations, Internet and packets, transport control protocol, application protocols, security, and Web security. This course is great lead into Web design, Web development, programming, or even network administration. (Students cannot take CS100 and CS101 for credits towards a Computer Science minor or major. CS100 does not substitute for CS101).

CS101. Introduction to Computer Science (3).
This course gives students a broad look at Computer Science from both software and hardware perspectives. It introduces topics on the Internet as a global information infrastructure, computer networks, Internet browsing tools, HTML, data structures, algorithm problem solving, overview of computer organization, number systems, switching algebra, logic gates, security, and computing ethics and society. The course will cover theoretical and practical concepts. Students will develop basic projects. (Students cannot take CS100 and CS101 for credits towards a Computer Science minor or major).

CS103. Programming for Everyone I (3).
This course aims to teach students the basics of programming using Python. It covers the basics of how one constructs a program from a series of simple instructions in Python. This course will introduce the core syntax, commands, and data structures of the Python programming language. Topics include built in data structures such as lists, dictionaries, and tuples to perform data analysis.

CS104. Programming for Everyone II (3).
This course introduces students to the fundamentals of data access, data management, and expands upon the topics learned in CS103. Students will work with different data formats (HTML, XML, and JSON), and be introduced to the fundamentals of Structured Query Language and database design as part of a  multi-step data gathering, analysis and processing effort. As part of the course, students will build Web crawlers and multi-step data gathering and visualization processes. (Prerequisite: CS103).

CS110. Web Development (3).
Web Development introduces students to HTML, CSS, and JavaScript- the core technologies which power modern websites. Students will learn how to create interactive, aesthetically pleasing websites for a variety of purposes. This course culminates with a project in which students will build a website for a real or imaginary product of their choosing. (Prerequisite: CS103).

CS151. Introduction to Games (3).
Games sit at the intersection of technology, art, and culture, so success within the games industry requires you to understand all three. This course explores why we love games, what role they play in society, and the industry that produces them. You’ll also learn the basics of game development. This course was  developed in partnership with Unity and the IGDA to help everyone interested in the games industry start on the right foot. 

CS199. Exploratory Internship (1-3).
Fall, Spring, May and Summer.

CS203. Introduction to C (3).
This course introduces students to the techniques used to program in C and the necessary concepts required to understand how higher-level programming languages are developed. The concepts introduced here will help students develop inherent understanding of how computers turn high-level code into ones and zeros and help students build more efficient programs. (Prerequisites: CS104).

CS221. Introduction to Information Technology Systems (3).
Information Technology continues to be one of the most important topics in the modern workforce. This course will introduce you to the fundamentals of the field and teach you a range of valuable professional skills, including how to set up operating systems, how to troubleshoot problems, and how to build a computer. By the end of this course, you’ll be prepared to take your next steps in IT and start solving technology problems on your own. (Prerequisite: CS100 or CS101)

CS222. Microprocessors (3).
This course is intended as an introduction to computer hardware and builds upon topics learned in CS203. It covers the techniques used to design and build microprocessors, memory, and other elements of modern-day hardware. Students will learn the fundamentals of machine language and assembly language. Students will also analyze the C compiler and learn how it produces the necessary strings of ones and zeros that will run on the hardware. (Prerequisites: CS203 and MATH135).

CS224. Networking Technologies and Telecommunications (3).
Whether a workplace is just a few people connected to a wireless router, or a financial giant, wired directly into the Nasdaq, it likely relies heavily on Network Technologies. This course will teach you how networks work, and how to set up and secure them. By the end of this course, you will be able to manage and maintain a range of different network types. (Prerequisite: CS221)

CS241. Cloud Computing Foundations (3).
This course will introduce students to the fundamentals of Cloud Computing, Infrastructure and Networking, and will explore how the cloud is used in a range of situations, including IT, App Development and Machine Learning. By the end of the course, students will know what the cloud is, and how to use it effectively. This course uses the Google Cloud Platform (GCP) and was built in concert with the Google Cloud Learning Services team. (Prerequisite: CS104)

CS242. Data Structures (3).
This course will introduce students to the fundamentals of data structures. Students will learn what a data structure is, how to perform a range of operations on them and be introduced to the study of algorithms as it pertains to the covered data structures. Topics include linked lists, arrays, stack, queue, tree, graph, heap, hash, and the subsequent operations on the data structures such as adding elements, removing elements, searching for an element. (Prerequisite: CS104)

CS251. Content & Systems Design (3).
If you’ve ever enjoyed the experience of playing a video game, you’ve had a first-hand lesson in how important content and systems design are. The experience of a game is driven by four major components: content, systems, narrative, and user experience. This class will help you learn to design all four components and build a deeper understanding of the game development process and an introduction to concepts in scripting. (Prerequisite: CS151)

CS271. Foundations of Data Analytics I (3).
In an increasingly data-driven world, everyone should be able to understand the numbers that govern our lives. Whether or not you want to work as a data analyst, being “data literate” will help you in your chosen field. In this course, you’ll learn the core concepts of inference and data analysis by working with real data. By the end of the term, you’ll be able to analyze large datasets and present your results.

CS272. Foundations of Data Analytics II (3).
This course is intended as a continuation of Foundations of Data Analytics I. In this course, you’ll learn how Data Analytics are applied within the workforce. Particular attention will be paid to the role of the Data Scientist or Analyst, machine learning and the applications of Big Data. By the end of the term, you will be able to design and execute a range of data driven experiments. (Prerequisite: CS271)

CS283. PostgreSQL (3).
Whether a workplace is just a few people connected to a wireless router, or a financial giant, wired directly into the Nasdaq, it likely relies heavily on Network Technologies. This course will teach you how networks work, and how to set up and secure them. By the end of this course, you will be able to manage and maintain a range of different network types. (Prerequisite: CS104)

CS299. Experimental Course (1-3).

CS300. Special Topics in Computer Science (3).
This course covers new advanced areas in Computer Science not covered in any previous course in the program. It may be repeated with a different topic. (Prerequisite: Junior Standing).

CS302. C# Programming (3).
C# is a modern, general-purpose, object-oriented programming language with a range of uses, most notably creating desktop applications, web applications, web services and building games using the Unity engine. This course is intended to give students a working knowledge of the C# (v8.0) programming language and the .NET framework, as well as an understanding of C#’s application to the Unity Game Development Engine. (Prerequisite: CS242)

CS311. Application Development I (3).
This is the first course in the Application Development series. It explores Web application and introduces Django- a Python-based framework used in the creation of complex data-driven websites. Students will learn the features and particularities of Django, as well as the basics of Web applications including HTML, the Request-Response structure, database management, and the internal structure of servers. In addition to data structures and modules in Python. (Prerequisite: CS104).

CS312. Application Development II (3).
This course is the second course in the Application Development series. Students will build a Web application to post classified ads, plan and build their own unique Web application. The course heavily emphasizes project-based learning. (Prerequisite: CS311).

CS323. Computer Organization and Architecture (4).
This course covers the fundamental knowledge areas of computer organization and architecture. Topics include data representation, basic digital logic circuits, memory types and hierarchies, I/O and storage devices, CPU architectures such as RISC, CISC, parallel and multi-core. Three hours of lectures, two hours of laboratory work per week. (Prerequisite: CS104 and CS242).

CS324. Operating Systems and Computer Networks (4).
The course introduces the fundamental concepts of operating systems and computer networks. Operating systems’ topics include, operating systems operations, resource management, inter-process communications, security and protection, and distributed systems. Computer Networks’ topics include, OSI model, TCP/IP model, network topologies, LANs, WANs, client-server systems, protocols, network management, IP addressing, Internet routing algorithms. Three hours of lectures, two hours of laboratory work per week. (Prerequisite: CS323).

CS325. Operating Systems (3).
The course covers basic operating systems elements: management of processes and threads, concurrent execution of processes and threads, process synchronization, process communication, deadlock concepts and synchronization basics. The course also covers memory management and protection as well as file systems. Two hours lectures and two hours of laboratory work per week. (Prerequisites: CS341, CS323; Corequisite: CS326)

CS326 Computer Networks (3).
The course covers the following topics: fundamentals of networking systems, network architectures, OSI model, elementary functions of protocols. The course presents protocols such as TCP/IP, UDP, Ethernet, WiFi, VLANs as appropriate. Elementary functions such as error detection, lost and duplicate detection, synchronization, flow control, and retransmission control are presented. Parallel and distributed systems are analyzed in terms of communication needs and performance. Two hours lectures and two hours of laboratory work per week. (Prerequisite: CS341; Corequisite: CS325).

CS327 Network Security (3).
The course focuses on security issues while exchanging information between two parties. Authentication, authorization, and access control topics are covered. Data security and network security features are also discussed. Other topics such as firewalls, public key infrastructure, security standards and protocols, VPNs, and wireless network security are also discussed. (Prerequisite: CS326)

CS341. Algorithms Analysis and Design (3).
The course explores algorithms analysis in terms of time complexity and memory (space) complexity. The estimation of the complexity of algorithms will be presented. Polynomial vs NP complete algorithms will be discussed. Algorithm design will be covered as design paradigms, brute force, divide and conquer algorithms, dynamic programming algorithms, greedy algorithms, graph searching and traversal. (Prerequisites: CS242 and MATH135)

CS343 Linear Programming and Graph Theory (3).
The course studies the Simplex algorithm in linear programming and optimization and introduces elements of graph theory. The course covers the study of graphs, trees and networks, Hamilton paths, cycles, shortest path algorithm, min cut max flow algorithm. (Prerequisite: MATH303)

CS345 Queuing Systems (3).
This course introduces the analysis of complex systems with queueing networks. The two types of queueing networks will be presented: Jackson queue networks and closed networks. The course also covers the following topics: Markov processes, birth-death process, product form queueing networks. (Prerequisite: MATH303)

CS349. Cloud Applications Practicum (3).
Software engineers are frequently tasked with building applications using unfamiliar elements. This course will ask you to build an application using the Google Cloud Platform and one or more unfamiliar technologies or tools you select. By the end of this course, you will learn how to tackle unfamiliar situations, a key skill for any programmer, and improve your skills in programming and software development. This course will provide you with a project to add to your portfolio of work. (Prerequisite: CS241, CS242, and CS312)

CS353. Unity I: Working with Unity (3).
The Unity engine powers nearly 50% of all games and nearly 75% of mobile games. This course, built in collaboration with Unity and the IGDA, will introduce you to developing games in Unity. By the end of this course, you'll learn how to build a fully functioning game within the Unity system, including all key elements. (Prerequisite: CS251)

CS355W. Writing for Computer Science (3) (WRITING INTENSIVE)
Students will practice professional writing in Computer Science and learn the different software engineering processes. Students will develop a software application and apply different forms of writing. This involves learning to combine text and graphics to explain in writing. Students will learn how to conduct proper research to write a well-structured and formatted research paper. In addition, students will practice informal writing, work in group setting and develop presentation skills. (Prerequisites: CS104 and CCC101)

CS371. Principles and Techniques of Data Analytics I (3).
Data Analytics combines data, computation and inferential thinking to solve challenging problems and understand their intricacies. This class explores key principles and techniques of data science, and teaches students how to create informative data visualizations. It also explores particular concepts of Linear Algebra which are central to Data Science. (Prerequisites: CS104, CS272, MATH135, MATH204)

CS372. Principles and Techniques of Data Analytics II (3).
This course builds on Principles and Techniques of Data Analytics I to provide students with a more robust understanding of the tools of a Data Scientist. This class explores key principles and techniques of data science, including quantitative critical thinking and algorithms for machine learning methods. It will also introduce students to the ways in which data analytics is deployed in healthcare, marketing, political science, criminal justice, and other fields. (Prerequisite: CS371)

CS380 Database Design (3)
This course covers data modeling with the Entity-Relationship model and introduces the relations algebra and its operators. The student will learn about the integrity constraints, how to translate an Entity-Relationship model into a relational model, functional dependencies, normal forms and normalization algorithms. The SQL language is introduced as a data definition language and a data query language. (Prerequisites: CS242)

CS381. Database Management Systems (3).
This course introduces relational database management systems and the mechanisms used to manage databases. The course covers transactions processing, index structures, security, concurrency control, crash recovery. (Prerequisite: CS380)

CS399. Professional Internship (1-6).
The professional internship will provide an opportunity for students to develop job related skills and bring them in contact with professionals in the field. The internship should be through the Institute for Career Planning and approved by the Department Chair. Students will make a formal presentation to the department. (Prerequisite: Junior or Senior standing and Department Chair approval required).

CS400. Advanced Topics in Computer Science (3).
This course covers new advanced areas in Computer Science not covered in any previous course in the program. This course may be repeated with a different topic. (Prerequisite: Senior standing).

CS401. Theory of Computation (3).
This course introduces the theory of computation through a set of abstract machines- finite automata, pushdown automata, and Turing machines- and examines the relationship between these automata and formal languages. (Prerequisite: CS341 and MATH216).

CS403. Parallel and Distributed Computing (3).
This course will introduce parallel and distributed computing. It covers a broad range of topics related to parallel and distributed computing, including architectures and systems, programming paradigms, algorithms, and other applications of parallel and distributed computing. (Prerequisites: CS326, CS325, and CS341).

CS405 Object-oriented Design (3).
The course provides object-oriented techniques and concepts such as classes, interfaces, encapsulation and inheritance, polymorphism, operator overloading. The students will be presented with some design patterns. The course also covers software design methodologies using UML diagrams. (Prerequisite CS341)

CS406 Programming Paradigms (3).
The course provides insights on programming concepts and underlying design principles. The following paradigms will be presented and discussed: procedural sequential, functional, object-oriented, and logic paradigms. (Prerequisites: CS405 and CS380)

CS411. Product Development (3).
In this course, students will learn the roles and frameworks of product development. Students will engage in a range of activities primarily focused on product management- including wire framing, creating user journeys, and writing requirements. (Prerequisite: Junior standing).

CS421. Information Security and Data Protection (3).
Imagine a world where people were trying to steal from every home, workplace or bank – all the time. That’s the world of digital security. Because it’s cheap  to launch attacks on every system you can find, virtually every organization and individual is always under some level of digital attack. This course will teach you how to help defend against this constant assault and keep valuable information and critical systems safe. (Prerequisites: CS104 and CS324)

CS429. Information Technology Capstone (3).
In previous courses you’ve learned how to solve problems as they occur, and how to address the various components that make up an organization’s IT ecosystem. This course will put it all together. You’ll learn how to solve systemic problems across all layers of an organization and guide transformational change. By the end of this course, not only will you know how to solve IT problems as they arise, you’ll be able to prevent those problems from happening in the future. (Prerequisites: CS421, MGMT342, and Senior Standing)

CS451. Independent Study (1-3).
Supervised reading and research in a special interest area of Computer Science. (Prerequisite: permission of department and instructor’s approval of a written proposal that is submitted to the department prior to registration for the course). Fall, Spring, May and Summer.

CS452. Software Engineering (3).
The course introduces the fundamental and general technique concepts in software engineering. Topics include: software process structure, process models, agile development, requirements, design, implementation, validation, testing, maintenance, documentation, and security engineering. Students will work on group projects. (Prerequisites: CS405 and CS380)

CS453. Unity II: Advanced Unity Programming (3).
This course, built in collaboration with Unity, is intended to provide students with the knowledge to bring their mastery of the Unity game engine and C# programming up to a professional standard. Students will learn how to perform a range of vital code-based tasks within the Unity platform and will grow their skills in building core gameplay functionality. Upon successful completion, students will be prepared to sit for the Unity Certified Programmer exam. (Prerequisite: CS353)

CS459. Capstone Project: Building a Game (3).
This course is intended as a culmination of all a student’s work in the Unity Game Development major. Students will work in groups to build a game in the unity engine that uses real-time 2D or 3D visuals and showcases their understanding of the core principles of game design. Students will pitch their game, design, prototype, build and test their game. Students will be evaluated based on the quality of their game, and their internal project management processes. (Prerequisites: CS341 and CS453)

CS463. Cryptography (3).
This course will introduce students to cryptography and data security. Topics include stream ciphers, data encryption standard (DES) and alternatives, advanced encryption standard (AES), block ciphers, public key cryptography, RSA crypto-systems, digital signatures, and hash function. (Prerequisite: MATH216, MATH303, CS326, and CS341).

CS465 Digital Forensics (3).
The course covers computer forensics based on the features that are available in current operating systems. It introduces the scope of digital forensics, the file system in Window operating system, evidence acquisition, network forensics and incident response, forensics for mobile platforms, forensics in images and photographs, coverage of other operating systems such as MacOS and Linux, and emergent technologies (IoT). (Prerequisites: CS325, CS326, CS327)

CS473. Artificial Intelligence (3).
This course provides students with the fundamental knowledge for understanding Artificial Intelligence. Topics include intelligent agents, knowledge-based and search-based methods for problem solving and inferences, pattern recognition, fuzzy logic, and neural networks. (Prerequisites: MATH303, MATH304, CS341).

CS474 Artificial Neural Networks (3).
The course introduces the concepts of artificial neural networks and their use in solving pattern recognition problems. The course covers the topics of networks architectures, network parameterization, activation functions, artificial neuron models, Boltzmann machine neural network, convolutional neural network, learning algorithms. The course will also discuss the evolution of the architecture from learning to deep learning. (Prerequisite: MATH303)

CS475 Digital Image Processing (3).
The course introduces spatial operators and frequency operators used to process digital images. Processing techniques include image enhancement and restoration, image representation, sampling, quantization. The course also introduces image analysis and object recognition. (Prerequisites: MATH303) 

CS476. Machine Learning (3).
This course provides the foundations of machine learning. The course covers the topics of supervised learning (artificial neural networks, support vector machines), unsupervised learning (clustering, kernel methods), reinforcement learning, and ensemble methods. (Prerequisite: MATH303, MATH304, CS341)

CS477 Clustering and Classification (3).
The course introduces the students to a variety of algorithms and methods of clustering and classification. The focus will be put on the study of the expectation maximization, K nearest neighbors, K means, C means, and fuzzy C means. (Prerequisite: MATH303)

CS478 Computer Vision (3).
The course introduces elements of computer vision such as camera models, multi-view geometry, low-level vision (Including some image processing algorithms), high-level vision (object detection, object recognition, 3D queues). (Prerequisites: MATH303 and CS475)

CS479. Data Analytics Practicum (3).
This course is a capstone project in which students are asked to work through a full data science workflow on a set of real data drawn from sports, politics, business or public health. This course exists to prepare students for the kind of work they will do on Data Science or Analytics teams, and as such, also features an emphasis on interviewing for jobs in the space and communicating results to stakeholders. (Prerequisites: CS242. CS372, and Senior Standing)

CS490. Capstone Project (3).
Independent project on a Computer Science problem topic approved by the department, and under the supervision of a Computer Science department faculty member. The students will carry out research on the topic, develop, design, and implement a programming solution. By the end of this course, students will submit a well-written report, the code, and presentation. Other topics covered in this course include computing ethics and impact on society of computing Technology. (Prerequisite: Senior standing, Completion of core courses in the major, Department approval required)

CS491. Computer Science Practicum (3).
Students will work in groups to launch a web app prototype. The project should use database concepts, data structures and algorithms, and meets faculty approval. Students will pitch their product, select the necessary technologies, work in groups to build an application, and create a webpage from which the application can be accessed. Students will be evaluated based on whether their product meetings the goals they initially established, and on their internal project management processes. (Prerequisite: Senior standing).

CS499. Advanced Experimental Course (1-3).

Courses in Computer Information Systems (CIS)

CIS140. Computer Applications for Business (3).
A practical course in business problem solving, decision making and presentation of information utilizing microcomputer technology. Through business problem simulations the student will actively solve problems while learning about microcomputer hardware configuration, operating systems, and common business microcomputer software including spreadsheets, data base management systems, and business graphics. (Prerequisite: MATH101).

CIS199. Exploratory Internship (1-3).

CIS201. Introduction to Data Science (3).
In this course, students learn how to gather, clean, normalize, visualize and analyze data to drive informed decision-making, using spreadsheets, SQL, Python, and other tools to work collaboratively on real-world datasets. (Prerequisite: CS103; Co-requisite: CIS201L).

CIS201L. Introduction to Data Science Lab (1).
In-class projects to accompany CIS201. (Co-requisite: CIS201).

CIS250. Advanced Web-Based Programming (3).
The use of advanced programming techniques, using server-side software to develop dynamic web pages. Discussion of relevant human interface issues. (Prerequisite: CS110).

CIS299. Experimental Course (1-3).
CIS399. Professional Internship (1-12).
CIS451. Independent Study (1-3).
CIS499. Advanced Experimental Course (1-3).

Get Started

Begin your
journey at
Adrian College

Share this Page