CSC498U
Systems Programming
Course Description
Systems programming in a Unix-style environment, including source control, scripting languages and C programming. The course covers topics including creating and using software tools, pipes and filters, file processing, shell programming, processes, threads, system calls, signals, and network programming.
Course Learning Outcomes
Students shall be able to:
Announcements
August 28, 2018: Fall classes begin
October 4, 2018: Last day for early withdrawal (WI)
October 25, 2018: Deadline for Incomplete grades
November 8, 2018: Last day for withdrawal from courses (WP/WF)
December 7, 2018: Fall classes end
Instructor
Professor Haidar M. Harmanani
haidar@lau.edu.lb • http://vlsi.byblos.lau.edu.lb • http://harmanani.github.io
Office Hours:
Block A • Room 810
Tuesday, Thursday • 3:00pm – 4:30pm • 8:00pm – 9:30pm or by appointment
Lectures
Lecture notes are made available here in PDF formats. Additional readings will be posted under the resources section in this page.
Lecture 01: Course Introduction
Lecture 02: Bits, Bytes, and Integers
Lecture 03: Bits, Bytes, and Integers (Continued)
Lecture 04: Floating Points
Lecture 05: Development Tools I (gcc, gdb, make, Unix Shell, editors, ..)
Lecture 06: Development Tools II (git)
Lecture 07: Machine Level Programming
Lecture 08: The Memory Hierarchy
Lecture 09: Cache Memories
Lecture 10: Code Optimization
Lecture 11: Linking
Lecture 12: Exceptional Control Flow: Exceptions & Processes
Lecture 13: Exceptional Control Flow: Signals & Nonlocal Jumps
Lecture 14: System Level I/O
Lecture 15: Virtual Memory: Concepts
Lecture 16: Virtual Memory: Systems
Lecture 17: Dynamic Memory Allocation: Basic
Lecture 18: Dynamic Memory Allocation: Advanced
Lecture 19: More Malloc
Lecture 20: Network Programming (Part I)
Lecture 21: Network Programming (Part II)
Lecture 22: Concurrency
Lecture 23: Synchronization: Basic
Lecture 24: Synchronization: Advanced
Lecture 25: Thread-Level Parallelism I
Lecture 26: Thread-Level Parallelism II
Labs and Projects
Exams
All students are expected to take exams during the scheduled time slots. With the permission of the instructor, you may be allowed to take an exam at an alternate time. However, you must request this rescheduling at least 2 weeks prior to the exam date. Exceptions will naturally be made for sudden problems such as serious illnesses/injury. Since the exam schedule is being published at the beginning of the semester, scheduling conflicts (e.g., job interviews, GREs, etc.) are not legitimate reasons to miss an exam.
Midterm Exam
The midterm exam is scheduled for February 16, 2016: Midterm Examination. The midterm exam will be a closed book exam. In principle, all topics discussed in class (whether on the lecture notes or not) and in the assigned readings are a legitimate source for exam questions.
Previous Midterm Exam (Spring 2009)
Previous Midterm Exam Key (Spring 2009)
Final Exam
The final will be comprehensive, with roughly 1/3 of the material devoted to material covered prior to the midterm. The exam will be on May 15, 2015 from 8:00 am - 11:00 am.
The exam will cover the following sections in the textbook:
Grades
Resources
Raspberry Pi Projects
Reading Assignments
Essential Readings
Machine Learning
Internet Of Things