| |
Mar 18, 2026
|
|
|
|
|
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
- Collaborate with team members in problem solving while employing effective version control principles.
- Apply “”divide and conquer”” approaches typically employed by professional software engineering teams to solve problems in a team setting.
- Develop an expertise with the command line (i.e. using a terminal).
- 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.
- Explain low level memory management techniques using appropriate tools (such as C).
- Evaluate and justify algorithmic and code choices through the lens of optimizing memory management.
- List and describe the major topics and results in the theory of computing.
- Develop appropriate prompts for a generative AI, such as ChatGPT, to develop a program and evaluate generated output for effectiveness.
Course Contents
- 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.
- Version control: Explain the principles of version control; Apply version control in the context of a group project.
- 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
|
|