Mar 18, 2026  
2025-2026 Catalog SVC 
    
2025-2026 Catalog SVC

CS 301 - Foundations of Computer Science


Credits: 5
Variable Credit Course: No

Lecture Hours: 55
Lab Hours: 0
Worksite/Clinical Hours: 0
Other Hours (LIA/Internships): 0

Course Description: Practice object-oriented programming and apply elementary data structures and algorithms to medium-scale applications. Exposure to the theory of computing and computing machines.

Prerequisite: CS 123 with a grade of C or higher. Admission to BSCS program and Dept. Chair permission.
Meets FQE Requirement: No
Integrative Experience Requirement: No

Student Learning Outcomes
  1. Collaborate with team members in problem solving while employing effective version control principles.
  2. Apply “”divide and conquer”” approaches typically employed by professional software engineering teams to solve problems in a team setting.
  3. Develop an expertise with the command line (i.e. using a terminal).
  4. Use industry-standard approaches to manage the solution to a computer problem into a single unified final result. Examples include software packages, executables, and deployables.
  5. Explain low level memory management techniques using appropriate tools (such as C).
  6. Evaluate and justify algorithmic and code choices through the lens of optimizing memory management.
  7. List and describe the major topics and results in the theory of computing.
  8. Develop appropriate prompts for a generative AI, such as ChatGPT, to develop a program and evaluate generated output for effectiveness.

Course Contents
  1. Terminal: Employ the terminal to run commands from the command line; List, describe, and utilize command line tools commonly used in software development; Develop and utilize shell scripts; Understand the file tree structure and be able to navigate to and manipulate files using the terminal.
  2. Version control: Explain the principles of version control; Apply version control in the context of a group project.
  3. Computing Theory: List and describe the different types of grammars / languages / automotons and explain the differences between them; Describe the types of problems that each level of grammars / languages / automotons can or cannot solve; List and describe some of the major results of computability theory, and explain their significance, e.g., the halting problem; List and describe some of the major results of complexity theory, and explain their significance, e.g., the open question of P = NP.


Instructional Units: 5