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 the history of the Internet, including commercialization and growth, computer generation, Internet and packets, transport control protocol, application protocols, security, and Web security.  This course is a 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 an 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) 

CS262 – Linux – Command Line and Shell Environments (4):

This course covers the understanding of Unix-like OSes and the use of system utilities such as file management, shells and scripting. The students will also learn how to use text editors (non-graphic) and miscellaneous utilities. The course also covers the use of the command line in Unix-like operating systems as well as the underlying shell environments and the programming using the shell languages to automate and perform administrative operations. Prerequisite: CS101

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

CS321 – Elements of Networking (3): This course covers TCP/UDP protocols as well as Ethernet and describes the devices and services used to support communication and the role of protocol layers in networks. It introduces subnet masks and addresses and their calculation in IPv4 and IPv6 networks. The students will learn to build small Ethernet networks using networking devices such as switches and routers. Prerequisite: CS101 

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 of 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 of 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 algorithm 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 settings and develop presentation skills. (Prerequisites: CS104 and CCC101)

CS362 – Linux Configuration and Administration (4): This course exposes the students to the basics of system configuration and administration. The course develops skills necessary for day-to-day operations on a Unix-like operating system, including system security. Command line-based and GUI-based administration are covered. Prerequisite: preferably CS262

CS364 – Elements of Penetration Testing (3): This course exposes the students to the ways hackers use to compromise operating systems and evade antivirus systems. The course also covers the detection of breaches in the network. Elements of data breaches analysis and audits of information technology security will also be presented. Prerequisite: CS321

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)

CS373 Data Science I (3)

This course is an introduction to data science in Python. Students will use advanced visualization and predictive modeling tools to turn raw data into actionable insights. Students will also learn how to use SQL to navigate databases. (Prerequisites: CS104, CS272)

CS374 Data Science II (3)

This course is intended as a continuation of CS373 Data Science I. This course takes a deep dive into machine learning models, natural language processing, and time series in Python. (Prerequisites: CS373)

CS380    Database Design (3)

This course covers data modeling with the Entity-Relationship model and introduces the relations of 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 transaction 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 tried 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 technical 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 cryptosystems, 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)

CS471 AI and Machine Learning (3)

This course is a technical approach to cutting-edge AI methods. Students will produce machine learning models to solve business problems, evaluate modern AI use cases (such as computer vision) and adapt Large Language Models (LLMs) for specific applications. (Prerequisites: CS374)

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 network 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, multiview 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).

An 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 the 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 meet 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 meets 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