Learning Objectives | Course Structure | Staff Contact | Grade Breakdown + Late Policy | Collaboration Policy

Topics

Learning Objectives

After taking this course, students will be able to:
  1. List commonly encountered patterns of how computations are organized. [Familiarity]
  2. Describe the basic building blocks of computers and their role in the historical development of computer architecture. [Familiarity]
  3. Articulate the differences between single thread vs. multiple thread, single server vs. multiple server models, motivated by real world examples (e.g., cooking recipes, lines for multiple teller machines and couples shopping for food). [Familiarity]
  4. Articulate the concept of strong vs. weak scaling, i.e., how performance is affected by scale of problem vs. scale of resources to solve the problem. This can be motivated by the simple, real-world examples. [Familiarity]
  5. Write a simple sequential problem and a simple parallel version of the same program. [Usage]
  6. Evaluate performance of simple sequential and parallel versions of a program with different problem sizes, and be able to describe the speed-ups achieved. [Assessment]
  7. Describe how computing systems are constructed of layers upon layers, based on separation of concerns, with well-defined interfaces, hiding details of low layers from the higher layers. [Familiarity]
  8. Describe how hardware, VM, OS, and applications are additional layers of interpretation/processing. [Familiarity]
  9. Describe computations as a system characyterized by a known set of configurations with transitions from one unique configuration (state) to another (state). [Familiarity]
  10. Describe the distinction between systems whose output is only a function of their input (Combinational) and those with memory/history (Sequential). [Familiarity]
  11. Describe a computer as a state machine that interprets machine instructions. [Familiarity]
  12. Explain how a program or network protocol can also be expressed as a state machine, and that alternative representations for the same computation can exist. [Familiarity]
  13. Develop state machine descriptions for simple problem statement solutions (e.g., traffic light sequencing, pattern recognizers). [Usage]
  14. For a given program, distinguish between its sequential and parallel execution, and the performance implications thereof. [Familiarity]
  15. Write more than one parallel program (e.g., one simple parallel program in more than one parallel programming paradigm; a simple parallel program that manages shared resources through synchronization primitives; a simple parallel program that performs simultaneous operation on partitioned data through task parallel (e.g., parallel search terms; a simple parallel program that performs step-by-step pipeline processing through message passing). [Usage]
  16. Use performance tools to measure speed-up achieved by parallel programs in terms of both problem size and number of resources. [Assessment]
  17. Use software tools to profile and measure program performance. [Assessment]
  18. Explain the importance of locality in determining performance. [Familiarity]
  19. Describe why things that are close in space take less time to access. [Familiarity]
  20. Calculate average memory access time and describe the tradeoffs in memory hierarchy performance in terms of capacity, miss/hit rate, and access time. [Assessment]
  21. Define how finite computer resources (e.g., processor share, memory, storage and network bandwidth) are managed by their careful allocation to existing entities. [Familiarity]

Course Materials

This course will use the book
Angrave's Crowd-Sourced System Programming online text. Additional readings and resources will be provided.

Course Structure

5007 has lectures, weekly quizzes, assignments, and a final project.

Lectures

Each class period will begin with a 10 minute quiz followed by a lecture. The lecture will assume you've done the reading. Questions are encouraged!

Quizzes

Weekly quizzes will be given at the start of class. The quiz will be based on the reading for the week. Each quiz is pass/fail: We will be looking for evidence that you did the reading and understood the previous lecture. The quiz will allow you (and us) to assess your understanding of the weekly reading. If you understand the weekly reading, lecture and assignments will be easier to understand.

Assignments

Assignments are programming, and will give you practice applying the concepts covered in class and readings the previous week. They will be released on Wednesdays, and due at 5pm the following Friday (that is, 9 days between release and due).

There will be 5 mandatory assignments.

Final

The final project

Staff

To contact the course staff as a whole, please use Piazza unless you need to email a staff member individually. You can post a private question on Piazza if you do not want your communication to be visible to the other students in the class.

Role Name Email
Lectures Adrienne Slaughter
Lectures Tamara Bonaci
TAs
Yogi Chandrasekhar
Gui Gao
Yi Jia

Grading

The class will consists of individual assignments and a final exam.
Homework 60%
Weekly Quizzes 10%
Final 30%

The final grade for a student is calculated as the weighted average of the preceding list. The homework component is calculated as the mean percentage of each homework score. The combined weighted average is rounded up to the nearest integer. The mapping to a letter grade uses the following scale:

A [95, 100]
A- [90, 94]
B+ [85, 89]
B [80, 84]
B- [75, 79]
C+ [70, 74]
C [65, 69]
C- [60, 64]
D [0, 59]

Extensions

Late assignments will not be accepted unless you have explicit instructions from the instructor.

Late Policy

You must hand in assignments when they are due. Late assignments get a 0. (See Resubmit, below). If you feel you have a compelling reason for not handing in an assignment on time, or for not attending a quiz, please talk to Dr. Slaughter in advance.

If you miss an assignment deadline, you should still hand in the assignment; we'll give you feedback even though we won't give you credit for your final grade. Unless otherwise specified, assignments are due at 5:00pm on their assigned due-date.

Regrades

Your assignments will be graded by TAs and will be completed by the Wednesday following submission. TAs will provide input, especially when points are taken off.

If you feel you have been unfairly graded, you may ask for a regrade from Dr. Slaughter. To get a regrade, you must:

Submit/Resubmit

To submit your assignments/final project: If you get less than 80% on an assignment, you can redo your assignement and resubmit it for more points. However, you need to know that assignments build on each other. To Resubmit for a higher grade:

Collaboration

For assignments and the final project, I encourage collaboration, but highly discourage cheating. Unfortunately, there can be a fine line. Your goal is to learn this material as well as possible, because it will be useful for you in the future. Cheating doesn't help you, and it wastes all of our time.

Cheating consists of sharing code or solutions to assignments by either copying, retyping, looking at, or supplying a copy of a file. Examples include:

Academic Integrity

The University views academic dishonesty as one of the most serious offenses that a student can commit while in college and imposes appropriate punitive sanctions on violators. Here are some examples of academic dishonesty. While this is not an all-inclusive list, we hope this will help you to understand some of the things instructors look for. The following is excerpted from the University's policy on academic integrity; the complete policy is available in the Student Handbook.

If you are found to have violated academic integrity in some way, the instructor will decide the appropriate penalty, ranging from a 0 on the assignment to reporting to the administration.

Copyright Policy

This course was based (with permission) on a course led by Joe Buck (and co-taught by Adrienne) at Northeastern University, Seattle. All teaching materials in this class, including course slides, homeworks, assignments, practice exams and quizzes, are copyrighted. Reproduction, redistribution and other rights solely belong to the instructor. In particular, it is not permissible to upload any or part of these materials to public or private websites without the instructor's explicit consent. Violating this copyright policy will be considered an academic integrity violation, with the consequences discussed above. Reading materials are also copyrighted by their respective publishers and cannot be reposted or distributed without prior authorization from the publisher.