Academic Catalogs

CS A253: Principles in System Design

Course Outline of Record
Item Value
Eff Term Fall 2026
Curriculum Committee Approval Date 12/02/2020
Top Code 070600 - Computer Science (Transfer)
Units 4 Total Units 
Hours 72 Total Hours (Lecture Hours 72)
Total Outside of Class Hours 144
Total Student Learning Hours 216
Course Credit Status Credit: Degree Applicable (D)
Material Fee No
Basic Skills Not Basic Skills (N)
Repeatable No
Open Entry/Open Exit No
Grading Policy Standard Letter (S)

Course Description

This lab is required by four-year institutions, coupled with CS A253, to satisfy lower-division work that prepares students for upper-division work in Computer Science. PREREQUISITE: CS A150 and CS A170. Transfer Credit: CSU; UC.

Course Level Student Learning Outcome(s)

  1. Solve problems using the C programming language.
  2. Describe the operation of a basic dynamic memory allocator and virtual memory.
  3. Use low-level operating system APIs such as POSIX, to interface between user programs and the operating system.

Course Objectives

  • 1. Describe the operation of a basic dynamic memory allocator and virtual memory.
  • 2. Program using POSIX API functions in the C programming language.
  • 3. Navigate in the *nix command-line environment.
  • 4. Understand the fundamentals of program execution within an operating system.
  • 5. Program in a "low-level" language, such as C.
  • 6. Understand the client-server networking model.
  • 7. Understand the complexities in concurrent programming.

Lecture Content

A. Unix/Linux command-line environment
1. Navigating in the file system
a. Directories
i. Current working directory and root
ii. Pathnames Absolute/Relative
b. Changing Directories
c. Listing the contents of a directory
2. Files and Directories
a. Creating Files
b. Creating Directories
c. Copying Files and Directories
3. Redirection
a. Redirecting Standard Input, Output and Error
b. Pipes
c. Filters
4. Permissions
a. Read, Write and Execute (chmod)
5. Processes
a. What is a process
b. Viewing current processes
c. Pausing/Interrupting a process
6. Using the vim command-line text editor
B. C Programming Language
1. Variables and Data types
2. Operators and Expressions
3. The main function
a. Command line arguments

4. Compilation from the command-line
a. gee compiler
b. make utility
5. Control Statements
a. if statement
b. while loop
c. for loop
d. switch statement
6. Data Structures
a. Arrays
b. User defined Data Structures
c. Memory layout
7. Pointers
a. Dynamic Memory Management
i. Allocation using malloc
ii. Deallocation using free
iii. How dynamic memory is managed through the Operating System
8. Functions
a. Function signature
b. Function pointers
c. The Stack and local variables
9. Linking and Loading
a. Object file structure
b. How the operating system uses and executable file to load a program
10. Debugging using gdb
C. System Stack
1. Interrupts
2. Exceptions
3. Signals
D. POSIX Abstractions
1. Use low-level system APls to interface with the Operating System
a. File system 1/0 functions: open, close, read and write
b. Process creation
i. fork
ii. exec
c. Memory Management
i. mmap and munmap
E. Memory Hierarchy
1. Cache
a. Direct mapped cache
b. Set associative cache
c. Fully associative cache
2. Virtual Memory
a. Pages and the Page Table
b. Page faults
c. Translation-lookaside buffer (TLB)
F. Concurrent Programming
1. Threads (Pthreads Library)
2. Shared resources
3. Race conditions
4. Mutexes
5. Atomicity
6. Semaphores
G. Network Programming
1. Sockets
a. IP addresses IPv4 and IPv6
b. Ports
2. Client-Server Model
a. Server
b. Client
c. Application Layer/Communication protocol
d. Writing a simple Server/Client application

Method(s) of Instruction

  • Lecture (02)
  • DE Live Online Lecture (02S)
  • DE Online Lecture (02X)

Instructional Techniques

Lecture, discussion, demonstration, live coding, in-class exercises.

Reading Assignments

Students will spend a minimum of 4 hours per week reading the textbook and/or other reading material assigned. Students will be expected to follow along with the exercises in the reading material

Writing Assignments

Students will spend a minimum of 6 hours per week writting code.

Out-of-class Assignments

Students will spend a minimun of 6 hours per week completing weekly programming assignments.

Study Non-Contact Hours Recommended

144

Methods of Student Evaluation

  • Midterm Exam
  • Final Exam
  • Short Quizzes
  • Problem Solving Exercises

Demonstration of Critical Thinking

Written examinations and laboratory exercises.

Required Writing, Problem Solving, Skills Demonstration

Successful performance of the laboratory assignments.

Eligible Disciplines

Computer science: Master's degree in computer science or computer engineering OR bachelor's degree in either of the above AND master's degree in mathematics, cybernetics, business administration, accounting or engineering OR bachelor's degree in engineering AND master's degree in cybernetics, engineering mathematics, or business administration OR bachelor's degree in mathematics AND master's degree in cybernetics, engineering mathematics, or business administration OR bachelor's degree in any of the above AND a master's degree in information science, computer information systems, or information systems OR the equivalent. Note: Courses in the use of computer programs for application to a particular discipline may be classified, for the minimum qualification purposes, under the discipline of the application. Master's degree required.

Textbooks Resources

1. Required Bryant, R.E., O'Hallaron, D.R.. Computer Systems: A Programmer's Perspective, 3rd ed. Santa Monica, CA: Pearson, 2016