CS 301: Assembly Language

  • Final exam and overall course grades are posted on NetRun.  There were some awesome projects--thank you for a fun semester!
  • The final exam is 10:15am-noon Wednesday, December 17, in our usual classroom.  See the course review and practice exam, and study the lecture notes beforehand!  The test is closed book and closed notes.
  • Project 2 final drafts are due by midnight Wednesday, December 17 on Blackboard (log in first!).  Be sure to submit your code, any executables, and a very short README explaining what you did and any performance data you've collected.
  • Project 2 presentations are in class December 8-12.  I've posted some project 2 rough draft comments on NetRun.
  • Project 2 rough drafts are due before midnight Wednesday, December 3 on Blackboard (log in first!).
  • Homework 8 on tiny examples of all recent lecture topics, from multicore to ARM to signals to syscalls, is due Wednesday, November 26.
  • Project 2 topics and deadlines are posted.  Topics are due in class Monday!
  • The pre-Thanksgiving lecture on Wednesday, November 26, is the "optional fun lecture", on biological computing.  It won't be on the final exam, so if you'd like a few extra hours for traveling, feel free to skip it.
  • Project 1 final code grades and comments are on NetRun.  There were some really amazing projects--thank you for your hard work!  Start thinking about a project 2 topic, which can extend your project 1, or be something completely different.
  • Homework 7 on bitwise and SSE operations is on NetRun, and due Wednesday, November 12 by midnight.
  • Project 1 final code should be fully debugged, polished, tuned, commented, and include at least a short README explaining what it is, and what its results mean.  You'll be graded on a combination of ambition, correctness, completeness, and comments/style.  Style and clean code count!  Turn in on Blackboard (log in first!) before midnight Wednesday, November 5.  This is scheduled after the presentation, so you can follow up on any suggestions or ideas you get during the presentation.
  • Project 1 rough draft comments are on NetRun.  Project presentations start next week, Monday October 27 & Wednesday October 29!
  • Project 1 rough drafts are due by midnight Wednesday, October 22.  The rough draft should be working, well-commented code, but doesn't need to have the full functionality of your finished project.  Turn it in on Blackboard (log in first!).
  • The midterm exam was in-class Friday, October 17.  Exam and current course grades are now posted on NetRun--this was a pretty tough exam, with only 2 A's, and more in the 50% range than I'd like.  But the midterm is only 20% of the final course grade, and there will be two projects, the final exam, and lots of homeworks still to come, so don't despair!
  • Project 1 topics are due in class Wednesday, October 15.  
  • Homework 6 is on NetRun, and is due Monday, October 13 by midnight.  It covers macros in C and assembly.
  • Homework 5 is on NetRun, and was due Monday, October 6 by midnight.  It covers structs.
  • Homework 4 is on NetRun, and was due Friday, September 26 by midnight.  It covers memory allocation and pointer arithmetic.
  • Homework 3 is on NetRun, and was Friday, September 19 by midnight.  It covers stack manipulation, function calls, and some string output.
  • Grades and comments for HW0-HW2 are now available via NetRun!
  • Homework 2 is on NetRun, and was *also* due Friday.  It's only two questions, but they're to write a factorial loop in assembly, so start early!
  • Homework 1 is on NetRun, and was due Friday, September 12 by midnight.  It's a bare-bones intro to assembly--don't worry, it's very easy!
  • Homework 0 is on NetRun, and was due Friday, September 12 by midnight.  This homework is to get you familiar with NetRun, and make sure you've already got enough C++ to succeed in this course.  If logging into NetRun doesn't show "CS 301: Homepage (Fall 2014)" at the bottom of the page, please email me ASAP so I can add your correct email!


Lecture Notes

  1. 12/05

    1. Course Review and Practice Final Exam Course Review
  2. 12/03

    1. Graphics Card Programming GPU programming in CUDA
  3. 12/01

    1. Embedded Systems: Tiny Computers Everywhere Embedded Systems
  4. 11/26

    1. OPTIONAL pre-break lecture: Bio/Nano computing Biological and Nanotechnological Computing
  5. 11/24

    1. Memory access via the Cache Cache Performance
  6. 11/19

    1. Threads: Multicore Parallel Programming Threads!
  7. 11/17

    1. Signals: Interrupts in userspace Signals
  8. 11/14

    1. Operating System access via "Syscalls" Talking to the OS with Syscalls
  9. 11/10

    1. ARM Machine Architecture & Assembly ARM Assembly Language
  10. 11/07

    1. SSE for high performance in assembly, C, and C++ SSE for High Performance
  11. 11/05

    1. SSE parallel instructions: SIMD SIMD: Single Instruction, Multiple Data in SSE
  12. 11/03

    1. Performance measurement and optimization Performance Programming
  13. 10/22

    1. Bits and Bitwise Operators & | ^ ~ << >> Bits, and Bitwise Operators
  14. 10/20

    1. Floating Point in Assembly Language Floating Point Assembly
  15. 10/15

    1. Example Midterm Exam Midterm Exam Review
  16. 10/13

    1. Linking Assembly and C/C++ code together Linking Assembly and C/C++
  17. 10/10

    1. Inline Assembly: Mixing assembly with C/C++ Inline Assembly in C/C++
  18. 10/08

    1. Assembler Macros NASM Macros
  19. 10/06

    1. Preprocessor Macros in C and C++ C Macros
  20. 10/03

    1. Function Pointers and Methods in C and Assembly Methods in C and Assembly
  21. 10/01

    1. Struct and Class layout in memory in C and Assembly Structures and Classes in C and Assembly
  22. 09/29

    1. Pointers and Pointer Casting in C and assembly Pointer Arithmetic in C and Assembly
  23. 09/24

    1. Sizeof, and dynamic allocation with malloc and the stack Dynamic Memory Allocation via malloc or the stack
  24. 09/22

    1. Memory access and static allocations Memory Allocation and Access in Assembly and C
  25. 09/19

    1. printf: like cout for C or assembly C printf: formatted output without cout
  26. 09/17

    1. Functions & Strings Function Calls and Strings
  27. 09/15

    1. The Runtime Stack: Push and Pop Stack: Push and Pop
  28. 09/12

    1. Bits in data storage, all the registers, and the sign bit Bits, Sizes, Signed and Unsigned
  29. 09/10

    1. Conditionals: goto, branch, and loop in C and assembly Goto and branch
  30. 09/08

    1. Assembly language: syntax and mindset Assembly Introduction
  31. 09/05

    1. Distinguishing C from C++ C versus C++

Index of 2014 Fall

Orion Lawlor

Orion Lawlor
  • Associate Professor, Computer Science
  • University of Illinois, Urbana-Champaign 2004 Ph.D.
  • Computer graphics; parallel programming; robotics; 3D printing.
  • Duckering 529
  • 907-474-7678
  • Office Hours:
    • By Appointment
  • lawlor@alaska.edu