Learning Objectives
| Course Structure
| Staff Contact
| Grade
Breakdown + Late Policy
| Collaboration Policy
Topics
- Application-level sequential processing: single thread
- Simple application-level parallel processing: request level (web services/client-server/distributed), single thread per server, multiple threads with multiple servers
- Basic concept of pipelining, overlapped processing stages
- Basic concept of scaling: going faster vs. handling larger problems
- Programming abstractions, interfaces, use of libraries
- Distinction between Application and OS services, Remote Procedure Call
- Application-Virtual Machine Interaction
- Digital vs. Analog/Discrete vs. Continuous Systems
- Clocks, State, Sequencing
- Combinational Logic, Sequential Logic, Registers, Memories
- Computers and Network Protocols as examples of state machines
- Sequential vs. parallel processing
- Parallel programming vs. concurrent programming
- Request parallelism vs. Task parallelism
- Client-Server/Web Services, Thread (Fork-Join), Pipelining
- Multicore architectures and hardware support for synchronization
- Kinds of resources (e.g., processor share, memory, disk, net bandwidth)
- Kinds of scheduling (e.g., first-come, priority)
- Advantages of fair scheduling, preemptive scheduling
- Latencies in computer systems: memory vs. disk latencies vs. across the network memory
- Caches and the effects of spatial and temporal locality on performance in processors and systems
- Caches and cache coherency in databases, operating systems, distributed systems, and computer
architecture
- Introduction into the processor memory hierarchy and the formula for average memory access time
Learning Objectives
After taking this course, students will be able to:
- List commonly encountered patterns of how computations are organized. [Familiarity]
- Describe the basic building blocks of computers and their role in the historical development of computer
architecture. [Familiarity]
- 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]
- 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]
- Write a simple sequential problem and a simple parallel version of the same program. [Usage]
- 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]
- 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]
- Describe how hardware, VM, OS, and applications are additional layers of interpretation/processing.
[Familiarity]
- Describe computations as a system characyterized by a known set of configurations with transitions from
one unique configuration (state) to another (state). [Familiarity]
- Describe the distinction between systems whose output is only a function of their input (Combinational)
and those with memory/history (Sequential). [Familiarity]
- Describe a computer as a state machine that interprets machine instructions. [Familiarity]
- 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]
- Develop state machine descriptions for simple problem statement solutions (e.g., traffic light sequencing,
pattern recognizers). [Usage]
- For a given program, distinguish between its sequential and parallel execution, and the performance
implications thereof. [Familiarity]
- 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]
- Use performance tools to measure speed-up achieved by parallel programs in terms of both problem size
and number of resources. [Assessment]
- Use software tools to profile and measure program performance. [Assessment]
- Explain the importance of locality in determining performance. [Familiarity]
- Describe why things that are close in space take less time to access. [Familiarity]
- Calculate average memory access time and describe the tradeoffs in memory hierarchy performance in
terms of capacity, miss/hit rate, and access time. [Assessment]
- 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 |
a.slaughter at northeastern.edu |
| Lectures |
Tamara Bonaci |
t.bonaci at northeastern.edu |
TAs
|
Yogi Chandrasekhar |
chandrasekhar.y at husky.neu.edu |
| Gui Gao |
gao.gui at husky.neu.edu |
| Yi Jia |
jia.yi at husky.neu.edu |
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]
|
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:
- Send a note to Dr. Slaughter on Piazza
- Tag it with the "regrade" topic
- Request a regrade within 7 days of the original grade being issued.
Submit/Resubmit
To submit your assignments/final project:
- Your assignment must be in its own folder in your Github Repo
- When you're ready to submit, push your submission to Github and tag it
- Submit the link to your tag on Blackboard by the deadline
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:
- Update your assignment, push it to github, and create a new tag.
- Create a post to all instructors on Piazza asking for a regrade,
tagging it with the "resubmit" topic
- All resubmissions need to be done by Aug 13, 2018.
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:
- Coaching a friend to arrive at a solution by simply following your instructions (i.e. no thinking involved). An example is helping a friend write a program line-by-line.
- Copying code from a similar course at another university or using solutions/code on the web, including GitHub.
- Communicating your solution with another student via electronic or non-electronic means.
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.
- Cheating: intentionally using or attempting to use unauthorized materials,
information or study aids in an academic exercise
- Fabrication: intentional and unauthorized falsification, misrepresentation, or
invention of any data, or citation in an academic exercise
- Plagiarism: intentionally representing the words, ideas, or data of another as
one's own in any academic exercise without providing proper citation
- Unauthorized collaboration:instances when students submit individual
academic works that are substantially similar to one another; while several students
may have the same source material, the analysis, interpretation, and reporting of
the data must be each individual's independent work.
- Participation in academically dishonest activities: any action taken by a
student with the intent of gaining an unfair advantage
- Facilitating academic dishonesty: intentionally or knowingly helping or a
ttempting to violate any provision of this policy
- Impersonation: working on behalf of another students or allowing someone else to represent a student online, in discussion groups, during quizzes, or exams
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.