CMSI 284
Computer System Organization/Systems Programming
Spring 2016
- Note
- This page is maintained as an archival record of the course shown above, and as such, some links on this page may no longer be valid nor accessible. They are kept here as a record of the resources that were available at the time of the course offering.
- Bazaar: Where you’ll find our sample code
- Piazza: Where we can discuss anything related to the class
- myLMU|Connect a.k.a. Blackboard Section 01 and Section 02: Where you can access class screengrab video links
- LMU Computer Science “Hacking” Guidelines: Where you can get some guidance on how to present and structure your code
- https://education.github.com is the starting point for a free-for-education private GitHub repository
- How to Ask Questions the Smart Way: Follow these tips to improve the quality and efficiency of the help that you get
Assignments
- Assignment 0119 Course scaffolding: 4d, 4e, 4f
- Assignment 0209 Numeric and character encoding exercises: 1a, 1b, 4d, 4f
- Assignment 0308 Machine encoding exercises: 1c, 4d, 4f
- Assignment 0322 Introductory C programs: 2a,
2b, 4a, 4b, 4c, 4d, 4e, 4f
reverse-range-in-place
helper/sample code.
- Assignment 0503a Introductory assembly language programs: 2c, 2d, 3c, 4a, 4b, 4c, 4d, 4e, 4f
- Assignment 0503b Mixed-language tasks and applications: 2a, 2b, 2c, 2d, 3a, 3b, 4a, 4b, 4c, 4d, 4e, 4f
Handouts/Other Content
- 0112: Overview
- Computer Systems Organization
- What is Systems Programming?
- What you can do with this knowledge: How a game-playing robot coded “Super Mario Maker” onto an SNES—live on stage
- 0114: Information and Computation
- 0119: Numeric Encoding
- 0121: Ripped from the headlines—the newly anointed largest prime number is...
- 0204: Character Encoding
- 0209: A Simple Computer
- 0216: Even more timely material—I tell ya the stuff in this course is forever relevant: Why 1/1/1970 Bricks your iPhone
- 0216: Introduction to C
- 0315: Multi-file C example with simple unit tests
- 0405: Assembly language programming
- 64-bit NASM Notes
- Scalar SSE Notes
- Linux System Calls
Related External Links
These links take you to web sites beyond this server. The sites are in no particular order or bias, just “as they came to mind.”
- Prof. Ray Toal’s CMSI 284 course page
- Software Carpentry: A very handy collection of practical “tech nuggets”
- LaTeX resources
- The LaTeX home page
- The Not So Short Introduction to LaTeX 2e (2.2M PDF)
- LaTeX 2e Cheat Sheet (106K PDF)
- Annotated LaTeX Guide
- The MikTeX home page: a popular LaTeX implementation
- Wikipedia: A good starting point for virtually
any concept lookup
- Wikipedia page for system programming
- Wikipedia page for system software
- Wikipedia page for CVS
- Encoding resources
- Steve Hollasch’s extensive summary of IEEE 754
- David Goldberg’s classic ACM Computing Surveys article What Every Computer Scientist Should Know About Floating-Point Arithmetic
- The IANA Character Sets page
- More UTF information from czyborra.com
- C language resources
- C99 language specification (3.3M PDF)
- Dave Tribble’s C language differences page
- A useful C language portal
- C library references: a detailed C90 reference by Eric Huss; for C99, go back to the official spec (3.3M PDF)
- Assembly language resources
- The Netwide Assembler (NASM) home page
- Software
Developer’s Manuals for Intel 64 and IA-32 Architectures: the authority for all things related
to Intel CPUs
- Volume 1: Basic Architecture (3.21M PDF)
- Volume 2A: Instruction Set Reference, A-M (2.91M PDF)
- Volume 2B: Instruction Set References, N-Z (3.12M PDF)
- 64-bit application binary interface (ABI) and calling convention documents
- The ARM Infocenter for all things ARM (the CPU behind many mobile and embedded systems)
- An article with sample code on Using the raw keyboard mode under Linux, by Karsten Scheibler of the Linux Assembly project
- Wikipedia page for the Executable and Linkable Format (ELF)
- A link to the “classic” article on Smashing the Stack for Fun and Profit by Aleph One