Department of Computer Science, College of Arts & Sciences

Fundamentals of Computing Systems

CS-350: Spring 2018

Instructors

    Name: Prof. Azer Bestavros
   Email: best@bu.edu
  Office: MCS-175, 111 Cummington Mall (ext: 3-9726)
   Hours: Wed 09:30am-11:00am          
          or by appointment arranged through email
    Name: Prof. Renato Mancuso
   Email: rmancuso@bu.edu
  Office: MCS-201B, 111 Cummington Mall (ext: 8-8537)
   Hours: Tue 05:00pm-06:30pm
          or by appointment arranged through email
 

Teaching Fellows

    Name: Qiaobin Fu
   Email: qiaobinf@bu.edu
  Office: Undergrad Lab Room 302 at 730 Commonwealth Ave
   Hours: Mon 03:00-05:00pm
          Fri 03:00-05:00pm
          or by appointment arranged through email
    Name: Nicolas Haddad
   Email: nhaddad@bu.edu
  Office: Undergrad Lab Room 302 at 730 Commonwealth Ave
   Hours: Mon 12:00-02:00pm
          Fri 01:00-03:00pm
          or by appointment arranged through email

Lectures

   Place: CAS-522
    Time: Tue/Thu 3:30pm-4:45pm

Sections

      A2: Wed 1:25pm-2:15pm(in CAS-204B)  
      A3: Wed 2:30pm-3:20pm(in CAS-220) 
      A4: Wed 3:35pm-4:25pm(in CAS-B25B) 
      A5: Wed 4:40pm-5:30pm(in MCS-B23) 
      A6: Wed 5:45pm-6:35pm(in MCS-B23

Important Dates

          Last day to drop the class without a W grade is Thu 2/22
          Last day to drop the class with a W grade is Fri 3/30
          Midterm Exam dates are Tue 3/13 and Thu 4/19
          Final Exam date is Thu 5/10 (tentative)

Cyberspace Coordinates

     URL: http://www.cs.bu.edu/~best/courses/cs350/S18
  Bboard: http://learn.bu.edu/
  Piazza: http://piazza.com/bu/spring2018/cs350
Facebook: http://www.facebook.com/groups/bucs350
 

Schedule of Lectures and Assignments

Changes to the schedule will be announced in class if need be

Date

Prof

Lecture Topic

Out

Due

1/18

AB

Background: System Abstractions & Performance Metrics

   

1/23

AB Background: Elementary Probability Analysis    

1/25

AB Performance Evaluation: Distributions as Models A1  

1/30

AB Performance Evaluation: M/M/1 Queuing Model Analysis    

2/01

AB Performance Evaluation: M/M/1 Variations A2  

2/06

AB Performance Evaluation: Queuing Network Analysis   A1

2/08

AB Performance Evaluation: Discrete Event Simulation A3  

2/13

AB Performance Evaluation: Measurement & Confidence   A2

2/15

RM Resource Management: Basic CPU Scheduling  C1  

2/22

RM Resource Management: Job Length-Aware Scheduling    A3

2/27

RM Resource Management: State-Sensitive (I/O) Scheduling A4  

3/01

RM

Resource Management: Real-Time & Priority Scheduling

   

3/13

  Exam #1   A4

3/15

AB Concurrency: Mutual Exclusion and Dekker Algorithm    

3/20

AB Concurrency: Peterson and Bakery Algorithms   C1

3/22

AB Concurrency: Semaphore Synchronization A5  

3/27

RM Concurrency: Producers/Consumers & Readers/Writers    

3/29

RM

Concurrency: Spinlocks & RCUs

A6  

4/03

RM Concurrency: Deadlock Management   A5

4/05

AB Concurrency: Transactional Semantics A7  

4/10

AB Distributed Systems: Synchronization and Lamport Clocks   A6

4/12

AB Distributed Systems: Network/Programming Abstractions A8  

4/17

AB Distributed Systems: MapReduce & Hadoop   A7

4/19

  Exam #2    

4/24

AB Looking Ahead: Multi-tenancy economics and privacy   A8

4/26

RM Looking Ahead: From IoT to cloud computing on a chip    

5/01

AB+RM

Wrap-Up

  C2
5/10   Final Exam (3:00pm-5:00pm) -- Tentative    

Notes:

  • A1-A8 are assigned problems that do not require coding.

  • C1 & C2 are assigned problems that require coding.

Important Dates:

  • Last day to drop the class without a W grade is Thursday 2/22/2018

  • Last day to drop the class with a W grade is Friday 3/30/2018

  • Midterm exam dates on 3/13/2017 and 4/19/2018 are immutable

  • Final exam is tentatively scheduled for Thu 5/10/2018


Overview

This course is a required sophomore/junior-level Computer Science course. It covers the fundamental concepts underlying the design and implementation of computing systems.

The philosophy underlying the design of this course is that students should be familiarized with problems that reoccur in software systems, and should be acquainted with the set of classical algorithms/techniques for solving such problems. In particular, it is important to develop the ability to recognize standard problems in different wordings and within unusual context, and match them with appropriate solutions.

Catalog Description:

Rigorous treatment of invariant concepts, algorithms, and performance evaluation methods underlying computing systems design. Topics include modeling and analysis of concurrent processing, computational resource scheduling and consumption, and performance evaluation techniques.

Prerequisite Courses:  
    CS-112 and CS-210: Programming and basic software/hardware interface concepts.
    CS-131 or CS-237: Elements of discrete and continuous probabilistic analysis.

Recommended Follow-up Courses:

The following courses build on knowledge assimilated in CS-350. They are natural follow-up courses in decreasing order of relevance (more or less).

    CS-451: Distributed Systems and Cloud Computing
    CS-552: Introduction to Operating Systems (and CS-553 as a follow-up to that)
    CS-455: Introduction to Networking (and CS-556 or CS-559 as follow-ups)
    CS-470: Performance Evaluation and Modeling of Systems and Networks
    CS-410: Software Systems and Systems programming
    CS-460: Introduction to Database  (and CS-562 or CS-565 as follow-ups)
    CS-450: Introduction to Computer Architecture (and CS-550 as follow-up)

Function in the Curriculum:

As a core undergraduate course, CS-350 does not focus on particular implementations or specific technologies. On the contrary, it stresses the fundamental concepts and basic algorithms that have survived (and are likely to survive) the evolution of computer software systems in general, and operating systems in particular.

This course is significantly different in purpose and coverage from CS-210 (Computer Systems) and CS-410 (Software Systems). CS-210 and CS-410 introduce computer systems to sophomores using a hands-on approach by examining the "mechanics" and/or the "plumbing" of modern (or typical) computer operation through exposure to various interfaces between architecture, compilers, loaders, linkers, and run-time systems. CS-350 does not focus on a particular interface or a particular technology, rather it deals with fundamental notions and algorithms that are common to computing systems in general and to software systems in particular.

This course is required or strongly recommended for the following advanced courses: CS-552 (Advanced Operating Systems), CS-550 (Advanced Computer Architecture), CS-551 (Parallel Computing Architectures and Models), CS-455/655 (Data Communications), CS-460/660 (Databases), and CS-470/670 (Performance Analysis). In that respect, this course covers basic notions that we expect students (graduates and undergraduates alike) enrolling into these classes to have mastered. For example, it is inconceivable that a student who is interested in taking a database or an operating systems class, not to have been exposed to the notion of concurrent processing and mutual exclusion. Similarly, it is unconceivable for a student enrolled in a networking, database, or operating systems class, not to have been exposed to performance analysis using simple queuing systems, for example.

Topical contents:

The topics covered in this class could be grouped under 4 general themes:

  • Performance Analysis and Evaluation (with probability refresher)

  • Scheduling and Resource Management

  • Concurrency and Synchronization

  • Distributed Systems

The first half of the semester will be devoted to the coverage of the first two of the above themes, whereas the second half of the semester will be devoted to the coverage of the other two themes.


Class Meetings and Communication Forums

Lectures:

Attending lectures is mandatory and will account for 10% of the final class grade. To take attendance, frequent one-question quizzes (at some point during a randomly selected set of lectures) will be given.

You are responsible for ALL the materials covered in the lectures including any topics not in the notes or references.

Class participation and questions are very welcome during the lectures. There is no such thing as a "stupid question". Failure to ask a simple question might result in the inability to follow the rest of the lecture (and even following lectures).

Up to 10 minutes at the beginning of every class may be devoted to answering questions related to topics discussed in previous lectures. This is a particularly good time to ask if you have questions.

Discussion Sections:

If you are taking this class then you have signed up for a weekly one-hour discussion session. Please check the course web page for the coordinates of your teaching fellow and of the place/time of the discussion sections.

The teaching fellow will be leading the discussion sessions. Materials covered in the discussion sessions will be elaborations on materials covered in the lectures. In some of the discussion sections (especially at the beginning of the course), the teaching fellow will be covering background/prerequisite materials that many students typically do not master. Also, the discussion sessions will be the venue used to answer any questions (or provide clarifications) regarding the homework assignments.

If (for some reason) you miss (or cannot make) the discussion section for which you are signed up, then please make sure to attend another one in the same week.

Office Hours:

You should come to the Instructor and/or Teaching Fellow's office hours with your questions well-thought out. Office hours are NOT meant to be tutoring sessions; they are meant to answer specific questions about the material covered in the lecture, discussion section, and lecture notes.

Questions like "could you repeat your explanation of ..." or "I do not understand section ... of the lecture notes" should be asked in the lecture and/or discussion sections.

On-line Forums and Facebook Group Usage:

The class communication forums (e.g., Piazza, Blackboard, and Facebook) are for you to use as channels for asking questions and seeking clarifications, whether from the instructor, teaching fellow, or classmates. However, like any broadcast medium, you should be careful not to abuse these channels. This means that "one-liners" and "cute" commentaries should be avoided.

You will be held responsible for any inappropriate postings on these forums.

Participatory Credit:

In an effort to make things a bit more dynamic during lectures and sections, the instructor and the teaching fellow may occasionally award "Bonus" credit points for student participation. Also, as a further motivation to read the notes thoroughly, bonus points will be awarded to students who discover technical "bugs" in the lecture notes, or who provide significant contributions. Such bonus points will count as extra credit points for the homework that is due next and will be capped at 10 points per homework. Any points above the maximum grade for the homework will not count (i.e. if your grade in a homework is 100/100 and you get 10 extra points, your grade for the homework will continue to be 100/100).


Class Notes

Azer Bestavros & Renato Mancuso, Lecture Notes on Fundamentals of Computing Systems.

These notes are a book that has been perpetually "in-progress", and hence they are subject to change. They constitute THE required readings for the class.

Note: These Lecture Notes are available from the Class Home Page. They are all in PDF format, so you will need access to an Acrobat Reader.


Homework Assignments

Homework assignments constitute an important part of this course. They are designed to help you understand the materials covered in lectures and in assigned readings. It is only by doing the homework that you really learn the material.

Nature, Frequency, and Grading:

There will be 8 homework assignments handed out throughout the semester (subject to change). Each assignment will consist of a set of "pencil and paper" problems as well as a "coding" problem. Coding problems will be due in two installments with each installment representing a self-contained deliverable (developed over a sequence of assignments). The non-coding portion of each assignment will be worth 100 points. Each of the two code installments will be worth 150 points. 

Homework Assignments will be worth 30% of the final grade. In calculating the overall homework grade, the assignment with  the lowest grade (for the non-coding portion) will be dropped. In other words, your homework grade will consist of 700 points for the "pencil and paper" portion of the assignments and 300 points for the "coding" portion of the assignments. Thus 21% of your overall grade will be on the "pencil and paper" portion of the assignments and 9% of your grade will be on the "coding" portion of the assignments. 

As detailed above, some of the problems in the homework assignments will require programming. Also, a number of homework assignments will require programming using threads and/or using a cloud platform such as Map/Reduce on Hadoop. While you are free to use any programming language or environment that you deem appropriate, the recommended language is Java and the recommended programming environment is Eclipse.

Homework assignments may be fairly long, each taking an average of  4 hours to complete (assuming that you are caught up with readings and are fluent in programming), although the time required will vary quite a bit from student to student and assignment to assignment. Always allow more time than you think you will need!

Electronic Submission Process:

Homework assignments will be posted on-line at the end of the week (typically on Fridays). As a tree-friendly practice, no hardcopies will be distributed or made available.

Completed assignments are submitted on-line using gsubmit (www.cs.bu.edu/teaching/hw/gsubmit/). If applicable, please follow special instructions regarding submission and documentation of your work (especially code). Typically, homework assignments will span at least two weekends. 

If your homework solutions (or parts thereof) are handwritten, you will need to scan your write-up and upload that electronically. Scanning capabilities are available at various university libraries and also through the main CS office on the first floor of MCS (during normal business hours, office staff can help you email a scanned copy of your work to yourself). Please take this into consideration so that you don't get stuck having to do this at the last minute.

Graded assignments will be returned (also on-line) in a timely fashion. It is the student's responsibility to make sure that the grade they received for each homework is properly recorded by the instructor and/or teaching fellow. This can be done by periodically checking your grades on-line through the Blackboard portal.  

Late Policy:

For full credit, your homework must be submitted electronically by the deadline. There will be a hefty penalty of 25% for a homework submitted one class late. You may submit part of the homework by the deadline to avoid the penalty on that part. No homework will be accepted if late by more than one class. There will be no exceptions to this policy, except for certified medical excuses. In such cases, extensions will be granted only if (and until) the homework solutions are posted (hopefully, about 1 week after the original due date).   


Exams and Quizzes

Attendance Quizzes and Piazza Polls:

Throughout the semester, I will be posting simple polls on Piazza to serve as attendance/participation quizzes. As such, some of these polls will be assigned and must be answered during the class (please make sure you bring your smart phone or personal computer along), whereas others will be assigned online and must be answered within 48 hours.  Each poll will consist of a single (easy) question mostly to check your understanding of material covered in lecture. You are allowed to miss one attendance quiz without being penalized.

Attendance quizzes and on-line polls will go towards the 10% of the final grade for class participation. 

Interim (Midterm) Exams:

There will be two in-class exams. These exams (combined) will be worth 30% of the final grade, and will cover the material presented from the beginning of the semester (or from the previous in-class exam) and up to the last lecture before the exam. Please check the class schedule for the specific dates of these exams.

Final Exam:

The course final exam is worth 30% of the final grade, and will cover the material offered throughout the semester. Please check the class schedule for date and time. The place for the final exam is typically the same as that of the lecture (and will be announced in due time, if different).

Policy on Missed Exams:

Please mark the exam dates on your calendar (and remember them when you make your recess and end-of-semester travel plans!) There will be absolutely no make-up exams, except for medical emergencies. For medical emergencies, you must provide a letter from a doctor, specifying the period of time during which you were unable to attend an exam.


Grading

Grade Breakdown:

The final class grade will be broken down as follows:

  • 10% on Class/Piazza Participation

  • 30% on Homework Assignments

  • 30% on Interim Exams #1 & #2

  • 30% on Final Exam

Grading Process:

Grading (except for the final exam) is done by a number of class graders, under the direct supervision of the Teaching Fellow(s). If you have an issue with a grade (homework or exam), please contact the Teaching Fellow(s). If your issue is not resolved, then (and only then) please contact me. In doing so, please note that (to ensure fairness and grading consistency) it is seldom the case that the I will overrule a Teaching Fellow.

This class is not graded on a curve, i.e., there is no prescribed proportions for specific grades. This means that if everybody's performance in the class deserves an A, then everybody will get an A. The converse is also true! Therefore, don't be satisfied with an "average" grade because that average could well be less than what you expect.  Being a "gateway" to all other (more advanced) CS "systems" classes, you should expect this class to be competitive. Thus, make sure you work hard from the very beginning.

In previous years, the average grade for this class was around B/B-. The minimum grade for this course to count towards the CS concentration is C.

An instructor is not allowed to give W (withdrawal) grades. One can get such a grade only by dropping this class by the deadline specified by the registrar office for withdrawals with or without a W grade (check the registrar's office calendar for the exact date). Also, an instructor is not allowed to give an I (incomplete) grade except if a student misses completing assignments and/or misses taking tests due to circumstances beyond their control.


Academic Code of Conduct

In addition to the normal and well-understood strictures against cheating on exams, altering transcripts, and etc., there are other varieties of academic misconduct described in the BU Academic Conduct Code and which you must be aware of when working on assignments.

The most relevant section of the Academic Code of Conduct for the assignments in this class relates to Plagiarism.

Plagiarism. Any attempt by a student to represent the work of another as his or her own. This includes:

  • Copying the answer of another student on an examination or copying or substantially restating the work of another person or persons in any oral or written work without citing the appropriate source, and collaborating with someone else in an academic endeavor without acknowledging his or her contribution.

  • Knowingly allowing another student to represent your work as his or her own. 

  • Submitting the same work in more than one course without the consent of the instructors.

Policy on Collaboration:

There is nothing wrong in principle about discussing the topics covered in the course with your friends and colleagues. However, there are severe consequences to plagiarism. In particular, when you submit a homework with your name on it, you are claiming that the work contained therein is your own; it is Plagiarism to submit work under your own name in which:

  • You collaborated with another student (current, former, friend, etc.) on homework problems;

  • You copied the solution from another student; or

  • You obtained the solution from a book or other sources.

The above is nothing less than plagiarism and will be punished accordingly.

If you are in a situation whereby you have collaborated with a student on a homework problem, or obtained homework solutions (or parts thereof) from some other source, then you should clearly and unambiguously disclose this in your write-up. Failure to do so constitutes plagiarism.

If you are caught cheating in a test or plagiarizing a homework, you will automatically receive an F and the matter will be reported to CAS Academic Conduct Committee, who recommends sanctions to the Dean of the College.

Handing in your own assignment a day or two late will affect your grade far less than turning in a copy of someone else's work on time!


Teaching Staff

Azer Bestavros is William Fairfield Warren Distinguished Professor in the Computer Science Department at Boston University, which he joined in 1991 and chaired from 2000 to 2007. He is the Founding Director of the BU Hariri Institute for Computing, set up in 2011 to support "a community of scholars who believe in the transformative potential of computational perspectives in research and education." pursues research in networking, distributed computing, and high-assurance systems. His currently active projects seek to develop multi-party computation platforms for privacy-preserving data analysis at scale, cloud-based open platform for smart-city applications, and game-theoretic mechanisms for cloud resource management.

Renato Mancuso is an Assistant Professor in the Department of Computer Science at Boston University, which he joined after completing his Ph.D. from the University of Illinois at Urbana-Champaign in 2017. His research focuses on real-time and embedded systems, with a particular focus on OS-level multi-core resource management technologies for high-performance, safety-critical avionics and automotive systems. He is also interested in applications and methodologies for design, deployment and analysis of cyber-physical systems, real-time cloud computing, embedded systems security, and systems technologies for UAVs.

Qiaobin Fu is a fourth-year PhD student in the Department of Computer Science at Boston University. He is a member of the Networks Research Group, and his advisor is Professor John W. Byers. Currently, his research interests center on designing algorithms and building systems in Networking. He received a B.E. from Dalian University of Technology in 2011, and an M.S. from University of Chinese Academy of Sciences in 2014.

 

 

Nicolas Al Haddad is a first-year PhD Student in the Department of Computer Science at Boston University. He Completed his BS in computer Science from the American University Of Beirut. He is working with Prof Azer Bestavros, Prof. Mayank Varia and Prof Haibin Zhang. His research interests span through an array of topics including but not limited to: Distributed Systems, Multi Party Computation, and Formal methods.