Home CS439

CS439: Principles of Computer Systems

Discussion Section Problem Set 0

Due to Canvas on Friday, September 1, 2017 at 11:59p


  1. In the Quizzes category on Canvas, you will find a quiz titled, "Academic Integrity Quiz". Complete that quiz. Multiple attempts are permitted, but you must eventually get all questions right in order to receive credit for your homework.

    Thanks to John Thywissen, who created this quiz and its accompanying presentation.
  2. In the Quizzes category on Canvas, you will find a quiz titled, "C and Linux Quiz and OS Concept Inventory". You are only allowed one attempt at this quiz, but it is graded only for completion. The C and Linux questions we are hoping you know, but there will be a review during the first discussion section next week. The OS Concept Inventory questions may be entirely new, and that's okay. You'll learn the answers over the course of the semester.
  3. Please review the Code of Conduct for the course. Print it out, sign indicating that you agree to abide by this Code of Conduct, and submit to any TA or Alison at office hours during the week of 9/5.
  4. On the course website, navigate to the syllabus. Once you have found the syllabus, find the section on pair programming, and read the paper "All I Really Need to Know about Pair Programming I Learned in Kindergarten". After reading that paper, write a seven sentence summary that contains all major points of the paper.
  5. Write a linked list in C. You may choose the development environment of your choice, but we highly recommend you choose an editor on Linux (vi, emacs, sublime, ...) and compile using gcc. (See the course home page for a brief introduction to gcc.)

    Your linked list nodes should be made of C structs, and each should contain an integer (the data) and pointers to the next and previous nodes. Your program should create a default list with 5 sorted nodes containing integers 1-5 and also implement add() and remove() methods. The add() method should insert a new node in sorted order. The remove() method should remove a node.

    How you test and design this code is up to you. There are no requirements about dedicated head/tail nodes or not, etc. Turn in your solution by cut-and-pasting it into a text file with the rest of your homework and submitting it on Canvas.