CSCI 6202: Computer Systems Fundamentals

Fall 2025 | Weds 6:10–8:40 PM ET | SEH 4040

Instructor: Dr. Shiza Ali,
Office Hours: Monday 11am-12pm ET (by appointment)

Course Description

From your very first “Hello, World!” to writing networked C programs, this course will teach you how to design, compile, debug and link multi-file applications in C, manage memory by hand, and understand the operating-system abstractions that lie beneath. You’ll also apply your skills to real-world shells and simple client/server networking.

  • Programming in C:
    • Compilation & command-line usage/li>
    • Formatted I/O: printf/scanf/gets and string handling
    • Control flow: if, for, while
    • Header files & modular code; pass-by-value functions & return values
    • Deep dive into pointers
  • Operating Systems & Shells:
    • Role of an OS; processes & process control (fork, wait)
    • Users, groups & permissions
    • How shells work under the hood; basic shell scripting
  • System Calls & Compilation:
    • Object files, linking & libraries
    • Key system calls for I/O, process management & file handling
  • I/O & Networking:
    • File descriptors & pipes
    • Socket programming: TCP/UDP client-server examples

Structure & Grading

  • Lectures + Assignments
  • Hands-on C programming exercises
  • Weekly assignments, and homeworks
  • Grade Breakdown
  • 5% Participation
  • 15% Midterm Exam
  • 30% Final Exam
  • 20% Weekly Programming Assignments
  • 30% Homeworks

Materials & Communication


Schedule

Week Date Topic Links To Do
1 Aug 27
C Programming Basics
  • Setting Up VSCode
  • Simple Printing (printf(), scanf())
  • Inputs and Outputs
  • Data Types (int, short, signed, unsigned, float, char, string?)
  • Compilation Basics
  • Using the command line in VSCode
  • Control Flow (if statements, for & while loops)
Slides Week 1

Visual Studio
  • Initial Quiz
  • ICA-0 Hello World
  • ICA-1 FizzBuzz
  • 2 Sep 3
    Functions and Structs
    • Re-visiting DataTypes (sizeof(), casting)
    • Arrays
    • Functions
    • Multifile Compilation
    • Structs
    Slides Week 2
  • ICA-2 Hour Glass
  • ICA-3 Dot Product
  • 3 Sep 10
    Pointers and Strings
    • Pointers
    • Re-visisting Arrays
    • Strings
  • Slides Week 3
  • I/O in C
  • C Strings
  • HW1 Support Material
  • ICA-4 Reverse String
  • ICA-5 Verify a Credit Card Number
  • HW-1 Fakebook (Part 1) Assigned on Blackboard. Deadline September 23rd 2025
  • 4 Sep 17
    Pointer Arithmetic
    • Bits and Bytes
    • Pointer Casting
    • Shifting
    • Bitwise Operators
    • Command Line Arguments
  • Slides Week 4
  • Pointer Arithmetic
  • Compiling in C
  • Numerical to Binary
  • Bits and Bytes
  • ICA-6 Pointer Playground
  • ICA-7 Bitwise Calculator
  • 5 Sep 24
    Memory Management 1
    • Structures typedefs
    • malloc, free
  • Slides Week 5
  • Endian
  • ICA-8 Contact Book
  • 6 Oct 01
    Memory Management 2
    • Data structures
    Slides Week 6
  • ICA-9 Linked List
  • 7 Oct 08
    Midterm + Homework 2
    Midterm
  • In-class Midterm
  • HW-2 Fakebook (Part 2) Assigned. Deadline October 21st 2025
  • 8 Oct 15
    Operating Systems and Shells 1
    • What is an OS?
    • What is a process?
    • users/groups
    • security
    • What is a shell?
    Slides Week 8
  • Worksheet: Computer Organization basics
  • 9 Oct. 22
    Operating Systems and Shells 2
    • Environment variables
    • I/O redirection (>, <, 2>&1)
    • Shell scripts (basics)
    • Shells as processes and the exec family (exec*)
    • Forking and launching processes
    • Signals (Ctrl+C, kill)
    Slides Week 9
  • In-Class Exercise:
    • Write a simple shell in C:
      • Prompt for user input
      • Parse commands
      • Use fork() and execvp() to run commands
      • Exit on exit
  • Bonus: Write a shell that handles environment variables (like PATH)
  • 10 Oct. 29
    Programs: Compilation, Linking, Execution
    • Program lifecycle: source → object → executable
    • Compilation stages: preprocessor, compiler, assembler, linker
    • Linking: static vs dynamic libraries
    • Registers & function stacks
    • User vs kernel space
    Slides Week 10
  • Homework 3 Assigned
  • ICA: Multi-file program compiled with gcc -c and linked
  • 11 Nov. 05
    Program and System Calls
    • System calls: what and why
    • Common system calls (getpid(), getppid(), write() etc.)
    • C program compilation stages: preprocessor, compiler, assembler, linker
    • Static vs dynamic linking
    • Viewing assembly with gcc -S
    Slides Week 11
  • In-Class Exercise:
    • Write a C program to print its own process ID and its parent process ID using getpid() and getppid()
  • Discuss gcc stages and demonstrate gcc -S and gcc -c
    12 Nov. 12
    Computer Organization: I/O & Files
    • File descriptors and standard I/O streams
    • Low-level I/O: open, read, write
    • Buffered I/O: fopen(), fgets(), fputs()
    • Role of OS & device drivers in file I/O
    Slides Week 12
  • In-Class Exercise:
    • Write a program to open a file, read all lines, and print to screen (fopen, fgets)
    • Homework 4: File copy tool (copy contents from one file to another in C using file I/O)
    13 Nov. 19
    Computer Organization: Networks & Remote Communication
    • TCP vs UDP basics
    • Sockets as file descriptors
    • Socket lifecycle: socket, bind, listen, accept, connect
    • OS abstractions in networking
    Slides Week 13
  • In-Class Exercise:
    • Write a C program that:
      • Takes a hostname from the user (scanf)
      • Uses gethostbyname() to look up its IP address
      • Prints the result to the terminal
    • Bonus: Try to connect to a web server and print "Connected!" if successful
    14 Nov. 26
    Thanksgiving Break. No Class.
    No class – enjoy the break!
    15 Dec. 03
    IPC: Processes & Threads
    Slides Week 15
  • In-Class Exercise:
    • Write a C program that uses pipes to send data between parent and child process
  • Review problems for final preparation
  • 16 Dec. 10
    Review
  • Comprehensive review worksheet
  • Practice questions (cumulative)
  • 17
    Finals!!!
    Final Exam

    Policies

    Student Responsibilities:

    • Conduct your online behavior in accordance with the class’ Professional and Social Contract
    • Attend all classes and labs unless sick or in emergency—email the professor before class
    • Interact, ask questions, and participate in class discussions
    • Be respectful in groups—ensure everyone’s ideas are heard
    • Complete all work in accordance with university and class academic‐honesty rules
    • Digest and process all provided materials (including Blackboard and Discord)
    • Contact the professor if you are worried about completing any responsibilities— we will work with you to craft a plan for success

    Late Policies

    Submission/due dates appear with each homework description.

    This class has a strict late policy for two reasons:

    • Fairness: Exceptions undermine equity.
    • Progress: Falling behind creates an impossible catch-up workload.

    Only valid excuses are serious medical or family emergencies (or pre-approved athletic commitments).

    Generally unacceptable excuses:

    • Your computer failed
    • Several midterms/assignments
    • Forgetting to git add or git push
    • Working hard but still not “quite there” yet

    Unexcused late work receives 0 credit. Homework is bi-weekly, so do not fall behind.

    Style & Code Craftsmanship

    Follow the style guidelines in the lecture notes (and see “Composite Style” for full details). Quality code is more than “working” code.

    Collaboration & the Honor Code

    You may discuss concepts and approaches with peers, but each student must write solutions independently and list collaborators by name. Unauthorized sharing or copying is a violation. We run code-similarity tools against both current and past submissions—any confirmed cheating is reported.

    ChatGPT, GitHub Copilot & Other Code-Gen Tools

    The use of ChatGPT, GitHub Copilot, or any code-generation tool is strictly forbidden. Violations are treated as academic misconduct.

    Consequences for Policy Violations

    • 1st violation on an assignment: grade for that assignment = 0
    • 2nd violation in class: course grade = F
    • All cases: reported to the Academic Integrity Office

    Academic Integrity

    GWU takes integrity very seriously. Violations (plagiarism, unauthorized collaboration, falsification, etc.) can lead to assignment failure, course failure, or expulsion, with a permanent record. See the GWU Code of Student Conduct and “Guide to Academic Integrity in Online Learning.” If in doubt—ask before you act.

    Contact Academic Integrity Office: rights@gwu.edu | 202-994-6757

    Absence Policy

    If you miss a class, you remain responsible for its material. Use lectures, scribe notes, office hours, and classmates to catch up.

    Grade Review Policy

    You have one week after a grade is released to request a correction—and you must provide a clear rationale (e.g., test-case errors).

    Use of Electronic Course Materials & Recordings

    Materials and recorded sessions are for private, course-related use only. Sharing without permission violates the Student Code of Conduct.

    Academic Support

    COVID-19 Guidelines

    See the University’s COVID-19 Safety & Success site for updates. Face coverings are required indoors—cloth or medical-grade masks. Exemptions require prior approval.

    Students with Disabilities

    Accommodations are arranged through Disability Support Services (DSS). Contact DSS at 202-994-8250 or disabilitysupport.gwu.edu.

    Ethical & Respectful Behavior

    We expect anti-racist, anti-sexist, accessible, and LGBTQ+-inclusive behavior. If you cannot meet these standards, please talk with the instructor or consider dropping the class.

    Religious Holidays

    Notify the instructor in the first week of any religious observance absences. See the University policy on “Religious Holidays” for details.

    Reach Out for Success & Wellness

    If you face difficulties, contact an instructor or advisor. Counseling: 202-994-5300 | Suicide Hotline: 1-800-273-8255

    Safety & Security