Resources
Resources
Sample Exams
- The midterm exam is on Thursday, July 2 from 12:30 - 2:20pm
- Sample Midterm Questions - Password
weprevail
- Solutions - Password
weprevail
- Solutions - Password
- The final exam is on Sunday, August 16 from 3:30 - 5:30pm
- The exam is not cumulative
- It covers material from the beginning of lecture slides #15 to the end of lecture slides #24
- This corresponds to the Memory Management, Virtual Memory, and Storage Structure & File Systems sections
- Sample Final Questions - Password
weprevail
- Solutions - Password
weprevail
- Solutions - Password
C Programming
- Essential C programming guide (45 pages) from Stanford University
- Programming in C online tutorial
- Book: The C Programming Language, 2nd ed (1988), by Kernighan & Ritchie
[ SFU Lib (free online) ] [ Buy on Amazon ] - Suggested C style guide -- you don't need to do all of this; it's a suggestion
Linux Programming
- Brian's YouTube videos on Linux Programming
- Topics include Linux in a VM, editors, C programming, Makefiles, pthreads/mutex, fork/exec, and Valgrind.
- Linux shell tutorial from Software Carpentry. Great for shell beginners, and covering loops.
- Advanced Linux Programming: Free book covering threads, sockets, pipes, ....
- Threads: POSIX thread library.
- Unix Programming Tools (16 pages) from Stanford University
- Book: Running Linux, 4th edition [ SFU Lib ]
- XEmacs reference card summary of commands (2 pages)
- Free materials to learn linux
- Free book Systems Programming in Unix/Linux [ source ]
Software Setup and Tools
- VM's
- VirtualBox: Free virtual machine, installed in Linux Lab, runs under most OS's.
- VM Ware Player: Free virtual machine; use for Linux development under Windows.
- Brian's YouTube video on VMWare and on configuring VM Ware)
- Ubuntu Linux: Download 64bit ISO to run in VMWare or Virtual Box
- Makefile Guide: Covers the basics of makefiles.
- Free Makefiles book. Good chapter on debugging makefiles.
- VS Code IDE / editor.
Install in Ubuntu:sudo snap install --classic code
Helpful Topics from CMPT 295
Overall, CMPT 295 gives you a good mental model for what is going on inside your computer system. Below are some of the specific topics from CMPT 295 that are relevant for this course:
- Basics of the binary number system
- Von Neumann architecture and the fetch/decode/execute cycle
- Basics of assembly/machine language instructions
- You don't need to remember any specific assembly language, just the details of how the generated machine code is executed
- Basics of memory architecture
- Understanding memory addresses
- Main memory (RAM)
- Cache memory and locality of reference