Instructor: Prof. Bhagi Narahari
Email: narahari@gwu.edu
Prerequisites: Programming and Data structures (CS 1112 or CS 1132), Discrete Math ( CS1311), and concurrent registration in CS2113 or a prior knowledge of C. (See undergraduate curriculum).

Time/Place:

  • Class meets: Tuesday, Thursday 2:20 - 3:35pm

Office Hours:
Check Piazza for most updated ones.

Online Platforms

  • Piazza for discussions
  • Slack for one on one communication with instruction team
  • Blackboard (Grades, Synchronous lectures, Homeworks)
  • Github (programming projects)
  • Webpage - course slides, recordings, tutorials, links to software

Course Staff:

Course Description and Learning Outcomes

This is an introductory course on Computer organization and computer systems. The course will expose the student to the different layers in a computer system and examine the working of a computer system at these different levels. It will expose the student to the low level details of how machines are assembled and the tools to program them – it will expose what really happens when your programs are run, thereby providing you with the intellectual tools needed to solve problems when things go wrong. In addition to the theoretical concepts, the course through the lab section will provide introduction to systems programming in the Unix environment using standard tools and focusing on issues such as performance and correctness. The course will take a bottom-up approach: it will start with the basic components of a computer system, machine representation of data, digital logic circuits, instruction sets and assembly programming, and then it uses the C language and the Unix operating system to study system level aspects such as memory management, file systems, safe programming, system stack, debugging and performance tuning of programs. The course will also expose students to working in teams. The lecture, and some lab sessions, will consist of in-class activities and students will be required to work in teams.

By the end of this course, students will be able to:

  • Design Combinational and Sequential Digital Circuits
  • Understand and identify the components, and their interaction, in a processor
  • Understand and write assembly programs
  • Understand how a compiler generates machine code for C programs
  • Improve performance of C programs through basic code optimization techniques

Course Outline

  • See the course webpage for weekly schedule

Textbook and Resources

The textbooks for this course are:

Software:

  • CEDAR Logic Simulator: Hardware logic/circuit simulator - this is the circuit simulation tool I will be using in the class examples and exercises. It only runs on MS Windows. If you use Mac, then you could use this for your practice: Logisim for Mac
  • LC3 Assembler and Simulator: Assembler and Simulator for LC3 processor. Available from the textbook website.

  • Lab Sections * You must be registered in a lab section. These will be conducted by the TAs. The Labs will be held on Blackboard. The labs will review material but will also cover new skills and software tools that will not be covered in the lectures.

Workload and Grading

The course will be taught using a combination of recorded video lectures (and tutorials) and live synchronous sessions. As a 3 credit course, it will require a minimum of 2.5 hours per week of direct instruction and minimum of 5 hours of independent learning. In addition, the laboratory section will require 75 minutes of direct instruction and will include independent learning exercises and additional software tools to assist in your learning. Over the course of the semester, your independent learning will include watching video recordings, readings (lecture notes and/or textbook), homeworks and projects. The synchronous sessions will include lecture summaries, exercises and discussions. All synchronous sessions will be conducted using Blackboard Collaborate, and recordings of most of these sessions will be provided on blackboard.

Grading:

  • 12%: Quizzes and Class participation. Quizzes will be held at the start of the lecture (some quizzes may involve programming). Late arrival means you will miss the quiz - no extra time will be provided for those who arrive late. On average there will be a quiz scheduled approximately every week except during the weeks of the two exams and the first week of class. I will ignore one lowest score on your quizzes when computing the grade.
    * What about extra credit on the quizzes: if you do very well on all your quizzes, then I will take this into account if you do not get a very good grade on the exams.
    * Class Participation: The grades for class participation will be based on required survey questions for each class and on the in-class exercises (as a group) during the lab and lecture sessions. There will be a number of these in-class exercises (during the lecture or sometimes during the lab), and the exercises will be given out during class. In addition, some of these assignments will be posted ahead of time so I expect that you will discuss with your team members and come to class prepared to answer the questions
  • 20%: Homeworks and Lab Assignments. A number of homeworks will be assigned. The goal of the homeworks is to improve your learning of the concepts covered in the lectures. No collaboration of any kind on the homeworks. Lab Assignments: During some of the lab or lecture sessions, there will be a number of short assignments that you must complete during the lab (or lecture) section within the allotted time (which will typically be less than 45 minutes). Late submission (i.e., after the end of the lab) will not be accepted. Some of the hardware lab assignments (using a simulator) will require demonstrating your solution to the TA or instructor.

  • 30%: Projects: There will be six projects which will require 10-30 hours of intensive programming or design or HW implementation (software or hardware). For group activities, each student is assigned to a group during class activities and possibly for one of the projects. For some of the projects, the material required to complete the projects will be covered in the lab section.

  • 38%: Two exams each of equal weight.
    * The two (midterm) exams account for 38 % of the total. (There will also be an optional “makeup” comprehensive oral exam held during the last week of classes– this will allow you to make up part of your exam scores. If you choose to take the makeup exam, to try and improve your exam scores, you must inform the instructor a week before the last class.)
    * What about final exam: There is no required final exam, but even if you choose not to take the optional makeup exam you must still plan on setting aside time for the final week to complete your final project(s).

Final Grading

  • Do I curve the grades? Yes.
  • Grades will be based on the ‘weighted total’ after curving and scaling, where the weights for each catergory are shown above - normalization places your total as a percentage of the highest total in the class, and curving identifies clusters.
  • Grades in each category and your weighted total will be posted on blackboard.
  • Grades are skewed toward the higher end if course average (or median) is high and skewed towards lower if they are low.
  • Grades are then approximately (since they will depend on the final distribution, including median score) assigned in the following ranges when the assumption is that the normalized average or median is around 78-80. Grades are skewed toward the higher end if average is higher and skewed towards lower if average is lower.
Percentage Letter grade
90-100 A range (A- to A)
80-89 B range (B- to B+)
70-79 C range (C- to C+)
60-69 D range (D- to D+)
below 60 F

Course Policies

If you have a disability, or a health or a family emergency, that may effect your participation in this course and wish to discuss academic accommodations, please contact me as soon as possible.

Late work policy: There are no late submissions allowed in this course. However, you are allowed to submit exactly ONE late assignment (homework or lab or project) during the entire course - and you will incur a 10% penalty for this one late submission. Please notify the instructor when you choose to submit an assignment late - the default extension is 36 hours past the original due date/time. The only exception to this rule is if you have a medical or family emergency, and proper documentation is required in order to get an extension.

Grades will be posted on Blackboard – make sure you check and inform the instructors if you see any disparity between what is posted on blackboard and what you think your grades are.

Email policy: You can send email to my GW email address. I will answer most class email during specific times set aside during the week for this purpose - so do not expect an instantaneous response.

Illness policy: If you are ill and it will cause you to miss class, lab, or an assignment, you should let me know in advance if possible. I cannot extend deadlines unless you contact me. You are still responsible for all material you missed, which generally will be available on the course website. It is your responsibility to ask another student what you missed.

Academic Integrity policy: It is very important in this course (and in life), that your work be your own. These guidelines will help you achieve that.

You must:

  • Do your best to solve all homework, quizzes, and exams on your own.
  • Notify me if you are using a tutor (this is not a problem, just let me know).

You may:

  • Discuss general approaches to solving the homework problems with other students by referring to questions in the textbook.
  • Discuss general system, compiler, or softare issues with another student although it is recommended that you contact one of the TAs or LAs for this purpose. (An example is issues with the C compiler or the LC3 assembler errors. ) You may use code provided in the textbook, and for the C programming projects you can reuse your own code from another course BUT you must clearly state this in your submission.

You may not:

  • Copy code to or from other students or people outside of the class.
  • Have someone else write code for you.
  • Copy code from the internet.
  • Write code as a group and then submit identical or slightly modified versions—if you discuss general approaches to solving a problem together, you still must be writing up your own independent solution.

The Academic Integrity Code will apply to this course. Please read through the code carefully. Penalties for violating the code or the policies described here include failing this course, and are elaborated in the GW Academic Integrity Code. Note that the minimum punishment is failure of the assignment.

Support for students outside the classroom.

  • Virtual Academic Support A full range of academic support is offered virtually in fall 2020. See Coronavirus FAQs for updates. Tutoring and course review sessions are offered through Academic Commons in an online format. See Academic Commons Coaching, offered through the Office of Student Success, is available in a virtual format. See Student Success. Academic Commons offers several short videos addressing different virtual learning strategies for the unique circumstances of the fall 2020 semester. See Study Skills. They also offer a variety of live virtual workshops to equip students with the tools they need to succeed in a virtual environment. See Virtual Learning.

  • Academic Commons. Academic Commons provides tutoring and other academic support resources to students in many courses. Students can schedule virtual one-on-one appointments or attend virtual drop-in sessions. Students may schedule an appointment, review the tutoring schedule, access other academic support resources, or obtain assistance at academiccommons.gwu.edu.
  • Disability Support Services (DSS) 202 994 8250. Any student who may need an accommodation based on the potential impact of a disability should contact Disability Support Services to establish eligibility and to coordinate reasonable accommodations. disabilitysupport.gwu.edu
  • Counseling and Psychological Services. 202 994 5300. GW’s Colonial Health Center offers counseling and psychological services, supporting mental health and personal development by collaborating directly with students to overcome challenges and difficulties that may interfere with academic, emotional, and personal success. See Health Center.