Data Structures, Algorithms, and Their Applications Within Computer Systems

"Peeling the layers of how computers work" -- Your Instructor

Course Information

  • Course Number: Data Structures, Algorithms, and Their Applications Within Computer Systems
  • Semester: Spring 21
  • Piazza: Forum Board
      Use piazza instead of e-mail for all course related matters
    • This way all course staff can answer questions
    • Class as a whole can participate and learn in discussions
    • Code also formats better nicely pasted in
    • (Linking your github is also easy for private posts)
  • Section 1: CS 5008/5009 (Mike's Section)
    • Location: Online
    • Schedule: Module and lab released Wednesday by midnight, Thursday 1:35-4pm EST live session on teams (review lecture, lab, and group discussion)
    • Teams Link for Live Classes: Microsoft Teams Link
  • Section 2: CS 5008/5009 (Vidoje's Section)
    • Location: Richards Hall 236
    • Schedule: 6-9:15pm EST

Instructor

  • Instructor: Mike Shah and Vidoje Mihajlovikj
  • E-mail: mikeshah or v.mihajlovikj( a t )Northeastern{dot}edu
    • Use e-mail primarily for personal matters
    • e.g. I have a co-op interview and need to reschedule XYZ
    • e.g. I am away for a conference on date X to date Y
    • e.g. I am away for a doctors visit.
    • (Read How to send an e-mail)
  • Office:tbd
  • Student Hours: In Location Online
    • Review course material with me and ask questions
    • Date/Time: By appointment
    • Sign up for a 15-30 minute appointments arranged by e-mail on Google Meet here

Watch this video to see course logistics

Teaching Assistant(s)
E-mail
Hours
Aman Batra batra.am (@ northeastern . edu)
  • Hours/Location listed on piazza under Resources/Staff
Robert Dragomir dragomir.r (@ northeastern . edu)
  • Hours/Location listed on piazza under Resources/Staff
Yuehua Huang huang.yueh (@ northeastern . edu)
  • Hours/Location listed on piazza under Resources/Staff
Darshana Jaint jaint.d (@ northeastern . edu)
  • Hours/Location listed on piazza under Resources/Staff
Lu Liu liu.lu3 (@ northeastern . edu)
  • Hours/Location listed on piazza under Resources/Staff
Harshal Shah shah.harshal (@ northeastern . edu)
  • Hours/Location listed on piazza under Resources/Staff
Xinchao Song song.xin (@ northeastern . edu)
  • Hours/Location listed on piazza under Resources/Staff
Theresa Todd todd.t (@ northeastern . edu)
  • Hours/Location listed on piazza under Resources/Staff
Xiayu 'Steve' Mei mei.xiay (@ northeastern . edu)
  • Hours/Location listed on piazza under Resources/Staff

Schedule/Road Map


The following is our tentative syllabus for the course, some changes should be expected throughout the semester. I will announce in class lecture, piazza, or through e-mail any major changes.

  • To get all of the assignments/activities for the course, you must first click the following link: Course Monorepo Do not do a 'git pull' until class starts (Occasionally I make changes/spelling corrections)
Week
Date
Lecture and Readings Assignments Note(s)
1 Thursday - January 21, 2021
  • Lecture outline
    • Course Syllabus
    • Course Logistics
    • Introduction to Computer Systems and Linux Crash Course
    • Introduction to Scripting
    • Writing a first C Program
    • Begin Module!
A1 out (due Jan. 29 Anywhere on Earth)

Lab 1 out (Due Jan. 28 before class)
First week of classes, welcome back!
2 Thursday - January 28, 2021
  • Lecture outline
    • Basic C Programming
    • Arrays and Memory
    • Pointers
    • The Stack, Heap, and Pass by value
    • Malloc and Free
    • Structs
    • Linked Lists
    • Begin Module!
A2 out (due Feb. 5 Anywhere on Earth)

Lab 2 out (Due Feb. 4 before class)
-- --
3 Thursday - February 04, 2021
  • Lecture outline
    • Debugging
    • Assembly
    • CPU Architecture
    • Operating Systems
    • Begin Module!
A3 out (due Feb. 12 Anywhere on Earth)

Lab 3 out (Due Feb. 11 before class)
-- --
4 Thursday - February 11, 2021
  • Lecture outline
    • Pre-processor
    • Compilers - Front End
    • Compilers - Back End
    • Linkers
    • Hashmap
    • Begin Module!
A4 out (due Feb. 19 Anywhere on Earth)

Lab 4 out (Due Feb. 18 before class)
-- --
5 Thursday - February 18, 2021
  • Lecture outline
    • CPU - Fetch Decode Execute
    • Pipelining
    • Memory Hierachy
    • Locality
    • Caching
    • Processes
    • Heaps
    • Begin Module!
A5 out (due Feb. 28 Anywhere on Earth)

Lab 5 out (Due Feb. 25 before class)
-- --
6 Thursday - February 25, 2021
  • Lecture outline
    • Parallelism vs Concurrency
    • Threads vs Processes
    • Shared Variables (Data Race, Dead lock, Starvation)
    • Thread-Safety and Semaphores
    • Begin Module!
A6 out (due Mar. 7 Anywhere on Earth)

Lab 6 out (Due Mar. 4 before class)
-- --
7 Thursday - March 04, 2021
  • Lecture outline
    • Memory
    • Pointers
    • Strings
    • Input/Output
    • Misc. Topics
    • Begin Module!
Online Exam (Study Guide) released March 5, you will have 1 week to take it once released.

You can resubmit any one assignment by March 12 by filling out this form. and pushing your code to your repository
Networking will not be covered in this class--consider the Canvas videos as supplements.

No video this week--just the review during the live session
8 Thursday - March 11, 2021
  • Lecture outline
    • Introductory Topic
    • Linear Search
    • Binary Search
    • Analysis of Algorithms
    • Pseudo-code review
    • Math Review
    • Big-Oh Notation
    • Big-Oh of Linked Arrays/Linked List/Stack/Queue.
    • Asymptotic Bounding
    • Sorts
    • Bubble Sort
    • Selection Sort
    • Insertion Sort
    • Begin Module!
A7 out (due Mar. 19 Anywhere on Earth)

Lab 7 out (Due Mar. 18 before class)
-- --
9 Thursday - March 18, 2021
  • Lecture outline
    • How Do We Really ‘Know’ Something and prove it?
    • What's the point of proving something?
    • A Primer on Proof Techniques
    • Proving Algorithm Correctness for Searching and Sorting
    • Asymptotic Notation
    • Begin Module!
A8 out (due Mar. 26 Anywhere on Earth)

Lab 8 out (Due Mar. 25 before class)
-- --
10 Thursday - March 25, 2021
  • Lecture outline
    • Recursion in C -- Countdown and iteration
    • How to beat N-Squared? Divide and Conquer
    • How to beat N-Squared? Merge Sort and Recurrence
    • Randomized Algorithms - Quicksort
    • Begin Module!
A9 out (due April 2 Anywhere on Earth)

Lab 9 out (Due April 1 before class)
-- --
11 Thursday - April 01, 2021
  • Lecture outline
A10 out (due April 9 Anywhere on Earth)

Lab 10 out (Due April 8 before class)
-- --
12 Thursday - April 08, 2021
  • Lecture outline
    • Tree Review and DFS
    • Trees are Graphs
    • Graph Representation and Notation: Adjacency List
    • Graph Representation and Notation: Adjacency Matrix
    • Breadth-First Search
    • Topological sort
    • Dijkstra's Shortest Path
    • Begin Module!
A11 out (due April 23 Anywhere on Earth)

Lab 11 out (Due April 15 before class)
-- --
13 Thursday - April 15, 2021
  • Lecture outline
    • Greedy Algorithms
    • Dijkstra's Shortest Path
    • Dynamic Programming
    • Begin Module!
Lab 12 out (Due April 22 before class)
-- --
14 Thursday - April 22, 2021
  • Lecture outline
    • TRACE for CS 5008
    • Make sure you have a gameplan of when to take the exam befor April 26, 11:59 pm EST
    • Review
    • Bonus Topics (Not on the exam)
    • Wrap-up and open discussion
    • Begin Module!
Online Exam opens April 20 at 12:00am EST on Canvas. (Study Guide). Exam must be completed by April 27 at 11:59 pm EST. Last day of class :(

Course Description


You're going to learn about data structures and algorithms as they are applied in real world computer systems. This course and the examples are applied in computer systems examples so you can understand how foundational data structures are used in nearly every modern machine.

Registrar Description: Presents an integrated approach to the study of data structures, algorithms, and their application within systems topics. Introduces a variety of fundamental algorithmic techniques (divide-and-conquer, dynamic programming, graph algorithms) and systems topics (models of computation, computer architecture, compilation, system software, networking). Demonstrates the integration of topics through programming assignments in the C language that implement fundamental data structures (lists, queues, trees, maps, graphs) and algorithms as they are applied in computer systems. Additional breadth topics include programming applications that expose students to primitives of different subsystems using threads and sockets.

Course Objectives

By the end of this course, you will:

  • Navigate the operating system using a terminal
  • Compile, debug, and execute source code
  • Describe each step of the compilation process for
  • Write, compile, link, and run C programs
  • Implement common data structures in C
  • Write programs with dynamically allocated memory in the C language
  • Describe how hardware is used on software to improve performance
  • Describe the difference between a process and a thread
  • Write a TCP networking application
  • Analyze and state the complexity of common sorting and search algorithms.
  • Describe specific algorithmic strategies and how each can be used to solve algorithmic problems.
  • Implement and use common graph representation structures and trees.
  • Implement common graph traversal and search algorithms.
  • Solve recurrences by substitution method and using the master theorem in order to prove an algorithm’s asymptotic complexity.
  • Design trade-offs given a set of algorithms and data structures regarding their time and space complexity.

Resources


There will be no required textbook for this course. However, these resources are recommended.

Prerequisites


  • MSCS Computer Science - Align

Academic Integrity and Non-Discrimination


Students and instructors are to follow the Northeastern policies on these important issues.

  • Northeastern Non-Discrimination Policy - This classroom is a safe space for the instructor and students to talk about ideas, share viewpoints, and learn.
  • Northeastern Academic Integrity Policy - You only cheat yourself if you are not honest. Most often cheating occurs when an individual falls behind or perhaps has other circumstances occurring in their life. Please consult the instructor before ever considering cheating.
    • If you are caught cheating I have to report the violation. My official policy is you receive a 0 in the course. Always remember, if you use any external sources, you must cite them.
  • Student Code of Conduct: Students and instructors will follow the following guide for how we conduct ourselves. This is to create a respectful environment where everyone can learn.

Make-Up Policy


  • Students participating in varsity athletics(this does not include club sports or intramurals) or other University sanctioned events may have the need for a make-up. Please contact me in advance of such events, so that appropriate accommodations can be made.
  • Occasionally, other life events and circumstances occur that were not planned. If this is the case, please e-mail me privately.
  • E-mailing me asking for extensions just because is unfortunately not fair to your classmates. The 10% penalty for each day late has to be enforced so I do not get taken advantage of.

Accessibility


Part of what makes Northeastern University unique, is our diverse cohort of students, faculty, and staff. In order to support this, Northeastern is committed to providing equal access and support to all qualified students through the provision of reasonable accommodations so that each student may fully participate in the University experience.

  • If you have a disability that requires accommodations, please contact the Student Accessibility Services office at DRC@northeastern.edu or (617) 373-2675 to make an appointment with the Disability Resource Center representatives in 20 Dodge Hall to determine appropriate accommodations.
  • We Care is another university resource for helping tackle challenges you may be facing. Asking for help is okay!

Lateness and Attendance Policy


Students who do well in this course tend to show up to the course consistently, participate, and engage with their peers. Come to class, come on time, and build good habits! In-Class activities that are not attended are a zero.

Wellness


Northeastern Univerity provides resources for student healthcare and general wellness. Please visit Northeastern Health and Counseling Services for your needs. While university can be difficult at times, please do take care of yourself. It is okay to seek help and take a break. Please communicate with your instructor, advisor, and officials at the university if you just need a mental break.

I personally remember how difficult university can be juggling myself multiple jobs, multiple clubs, and trying to learn. Do take your wellness seriously!

Assessment/Course Polices


Please find below the grading distribution that will be used for this course. You will find the grade you earn in this course on Canvas.

  • In-Class Activity: (5%)
  • In-Class Labs:     (20%)(Each equally weighted)
    • Labs are due before class of the following week.
  • Exam(s):           (20%)
  • Assignments:       (55%)(Each equally weighted)

  • The grade system follows the University Grading System.
    • A  = 95 – 100
    • A- = 90 – 94.99
    • B+ = 87 – 89.99
    • B  = 83 – 86.99
    • B- = 80 – 82.99
    • C+ = 77 – 79.99
    • C  = 73 – 76.99
    • C- = 70 – 72.99
    • D+ = 67 – 69.99
    • D  = 63 – 66.99
    • D- = 60 – 62.99
    • F  =  0 – 59.99
  • In the event of a sick/snow day (i.e. we miss a lab or in-class activity) the weight of each assignment increases (There may also be shuffling of course material if we are interrupted).
  • The expectation is that the assignments are fair but difficult, so you should start early!
  • Late Submissions of Assignments receive 10% off per day submitted late (up to 3 days max, then 0% received)
    • Unfortunately, with large classes I cannot make individual exceptions (i.e. "special deals") fairly to your classmates who are likely making other personal sacrifices to complete work on time.
    • Come speak to me about your wellness if something is otherwise impeding your progress so we can provide you available resources to succeed.
  • Assignments that do not compile/open receive no credit Simply put, programs that do not compile do not do anything.
  • There are no "re-grades" or points awarded one week after your grade is posted. "re-grades" may result in a higher, equal, or lower score.
    • There are no "re-grades" after the semester is over.
    • Do not ask multiple members of the course staff for "re-grades"
  • If you are currently waitlisted, you must submit your homework on time. That is the gamble! If you do not have blackboard access, you will submit by e-mail or other course mechanism (e.g. github).
  • There are no extra credit assignments just for you. I reserve the right to add points to assignments that do go above and beyond however. I reserve the right to give an extra credit assignment to the entire class, though this is highly unlikely.
  • I reserve the right to modify the grading scale in your favor if you show exemplary proficiency in any of the catagories. I will never modify the scale to lower a students grade.
  • In class work cannot be made up at a later date unless otherwise arranged with the instructor well in advance.
    • Course work completed after the date cannot be graded, as solutions will have been discussed (this includes if taking this course for an Incomplete).
    • Once again, "in-class" work must be completed in-class unless there is a documented emergency or you have prearranged with the instructor a make-up well in advance.
  • Lab time is meant for helping students with the lab, not completing homework. I have to prioritize lab first, then can answer homework questions.
  • No Facebook, no cell phones. Not only does it distract you, it distracts others!
  • Everyone needs to come see me in office hours (or by appointment) at least one time during the semester to introduce yourself. The purpose is so that you:
    • Know where my office is.
    • Get used to coming to office hours.
    • Let me know how I can help you achieve your goals.

Please do not redistribute or host any materials without e-mailing me first. I generally am happy to share the latest .pdf or slide presentation with those who ask. Thank you for your time!