This class teaches techniques for writing computer programs in high level programming languages to solve problems of interest in a range of application domains. This class is intended for students with little to no experience in computing or programming

- Teacher: Kristin Kernler
- Teacher: Rob Leary-ATA
- Teacher: Supriya Manikonda Keshavaiah Naidu
- Teacher: Supriya Manikonda Keshavaiah Naidu
- Teacher: Emily Nicholl
- Teacher: Luke Prather
- Teacher: Raj Singh
- Teacher: Jinyoung Park - SU
Learn fundamentals of data structures and algorithms.

- Teacher: Curry Guinn
- Teacher: Curry Guinn
- Teacher: Francis Jones
- Teacher: Kristin Kernler
- Teacher: Maddie Moralez
- Teacher: Chanheum PARK
- Teacher: Raj Singh
- Teacher: Elisabeth Stade
- Teacher: Jinyoung Park - SU
Covers how programs are represented and executed by modern computers, including low level machine representations of programs and data, an understanding of how computer components and the memory hierarchy influence performance.
- Teacher: Sangtae Ha
- Teacher: Sinan Incecelikli
- Teacher: Kristin Kernler
- Teacher: Raj Singh
- Teacher: Jinyoung Park - SU
- Teacher: Hoang Truong
- Teacher: Hoang Truong
- Teacher: Cailyn Craven
- Teacher: Kristin Kernler
- Teacher: Emily Nicholl
- Teacher: Jinyoung Park - SU
- Teacher: Hoang Truong
- Teacher: Hoang Truong
Covers foundational materials for computer science that is often assumed in advanced courses. Topics include set theory, Boolean algebra, functions and relations, graphs, propositional and predicate calculus, proofs, mathematical induction, recurrence relations, combinatorics, discrete probability. Focuses on examples based on diverse applications of computer science.

- Teacher: Cailyn Craven
- Teacher: Kristin Kernler
- Teacher: Luke Prather
- Teacher: Raj Singh
- Teacher: Raj Singh
- Teacher: Elisabeth Stade
- Teacher: Elisabeth Stade
- Teacher: Jinyoung Park - SU
Supports students in developing professional skills and practices in computing, including: preparing for technical and behavioral interviews, professional networking, mastering new technologies not addressed in the curriculum, presenting work, the role of graduate study, and exploring career and research directions.
This course will focus on defining a semester project, creating a portfolio to display work including projects like the one for this course, and for recording and managing the project work.
The student will define the project for the semester. The student will specify the learning objectives and layout the project assessments that will be applied when the project is completed. The project must include weekly progress reports across the entire semester with 3-5 hours of project work per week.
A public webpage such as GitHub User Website will be used as a location to store all project information.

- Teacher: Curry Guinn

- Teacher: Kristin Kernler
- Teacher: Emily Nicholl
- Teacher: Hoang Truong
- Teacher: Hoang Truong
Operating systems are an essential part of every
computing system and play a major role in determining the performance and
usability of the system. This course is an introductory course covering
the fundamental concepts in the design, implementation and evaluation of an
operating system. While the field of operating systems has been undergoing
rapid change, the fundamental concepts remain firmly clear. This course covers these fundamental concepts
comprised of device management, process management, memory management and
network management.

- Teacher: Francis Jones
- Teacher: Kristin Kernler
- Teacher: Kristin Kernler
- Teacher: Emily Nicholl
- Teacher: Jinyoung Park - SU
This course covers tools and practices for software development with a strong focus on best practices used in industry and professional development, such as agile methodologies, pair-programming and test-driven design. Students develop web services and applications while learning these methods and tools.

- Teacher: Curry Guinn
- Teacher: Kristin Kernler