CS A253: Principles in System Design
Item | Value |
---|---|
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 | 0 |
Course Credit Status | Credit: Degree Applicable (D) |
Material Fee | No |
Basic Skills | Not Basic Skills (N) |
Repeatable | 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)
- Solve problems using the C programming language.
- Describe the operation of a basic dynamic memory allocator and virtual memory.
- 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
Unix/Linux command-line environment Navigating in the file system Directories Current working directory and root Pathnames Absolute/Relative Changing Directories Listing the contents of a directory Files and Directories Creating Files Creating Directories Copying Files and Directories Redirection Redirecting Standard Input, Output and Error Pipes Filters Permissions Read, Write and Execute (chmod) Processes What is a process Viewing current processes Pausing/Interrupting a process Using the vim command-line text editor C Programming Language Variables and Data types Operators and Expressions The main function Command line arguments Compilation from the command-line gcc compiler make utility Control Statements if statement while loop for loop switch statement Data Structures Arrays User defined Data Structures Memory layout Pointers Dynamic Memory Management Allocation using malloc Deallocation using free How dynamic memory is managed through the Operating System Functions Function signature Function pointers The Stack and local variables Linking and Loading Object file structure How the operating system uses and executable file to load a program Debugging using gdb System Stack Interrupts Exceptions Signals< / POSIX Abstractions Use low-level system APIs to interface with the Operating System File system I/O functions: open, close, read and write Process creation fork exec Memory Management mmap and munmap Memory Hierarchy Cache Direct mapped cache Set associative cache Fully associative cache Virtual Memory Pages and the Page Table Page faults Translation-lookaside buffer (TLB) Concurrent Programming Threads (Pthreads Library) Shared resources Race conditions Mutexes Atomicity Semaphores Network Programming Sockets IP addresses IPv4 and IPv6 Ports Client-Server Model Server Client Application Layer/Communication protocol 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.
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: Masters degree in computer science or computer engineering OR bachelors degree in either of the above AND masters degree in mathematics, cybernetics, business administration, accounting or engineering OR bachelors degree in engineering AND masters degree in cybernetics, engineering mathematics, or business administration OR bachelors degree in mathematics AND masters degree in cybernetics, engineering mathematics, or business administration OR bachelors degree in any of the above AND a masters 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. Masters degree required.
Textbooks Resources
1. Required Bryant, R.E., & OHallaron, D.R.. Computer Systems: A Programmers Perspective, 3rd ed. Santa Monica, CA: Pearson, 2016