Courses/Computer Science/CPSC 355.W2014
Computing Machinery I (Winter 2014)
Course entry page: http://pages.cpsc.ucalgary.ca/~locasto/teaching/2014/CPSC355/
This course is an introduction to the principles and design decisions reflected in commodity computing architectures. It provides a gentle introduction to computer organization and to an assembly language; it presents these technical topics as not only a "computer language" to learn, but also an artifact that reflects design decisions.
It focuses on the Sparc and x86 machine platforms to ground the discussion in real technical detail.
The university calendar entry for CPSC355 describes the course as:
"An introduction to computing machinery establishing the connection between programs expressed in a compiled language, an assembly language, and machine code, and how such code is executed. Includes the detailed study of a modern CPU architecture, its assembly language and internal data representation, and the relationship between high-level program constructs and machine operations. "
This class is:
- 1/3 about the architecture details itself (the ISA)
- 1/3 about the execution environment details (the ABI)
- 1/3 about the translation process from "high"-level source code to assembly (and thence to machine code)
Announcements, Policies, and Metadata
This section includes the syllabus, textbooks, course policies, grading scheme, midterm and file exam policies, and submission instructions.
This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email email@example.com.
Find our class page at: https://piazza.com/ucalgary.ca/winter2014/cpsc355/home
Please see the University Academic Calendar for important add/drop dates, holidays, etc.
Here is the (tentative) schedule of tutorial topics.
Project Demo Schedule
Here is the demo schedule for the term project
Links & Miscellaneous Resources
- GNU Binutils (useful for manipulating source, compiled code, and ELF files) https://sourceware.org/binutils/docs-2.23.1/binutils/index.html
- assemblers and disassemblers: http://en.wikibooks.org/wiki/X86_Disassembly/Print_Version
- using as(1), the Unix assembler: https://sourceware.org/binutils/docs/as/
- https://defuse.ca/online-x86-assembler.htm (assembly on demand)
- NASM documentation: http://www.nasm.us/doc/nasmdoc0.html
- The Intel IA32 Developer Manuals, Volume 1: http://www.intel.com/products/processor/manuals/
- FreeDOS environment: http://www.freedos.org/
Random News and Links
Things We Won't Cover
- compilation (i.e., high-level language to RTL or some IR like LLVM)
- advanced caching
- advanced superscalar pipelines, Tomosulo, scoreboards, etc.
- in-depth circuit design, hardware languages (VHDL, Verilog, etc.)
- OS topics