globe1 Image dept Image
course Title

Introduction

The goal of the course is to convey the fundamental concepts that enable programs to execute on real hardware. Those concepts include how the operating system virtualizes the hardware to provide basic services and abstractions to enable a user program to effectively use the available hardware resources. The course also addresses how different programming constructs and idioms work.

The basic abstraction of a program running as one or more threads of control in a single flat address space (a Unix process) is the key to the course. Emphasizing that abstraction as the underlying model for understanding how a program works, from both the user program and hardware perspective (with the OS in between), run as a theme through all topics in the course. Examples include C pointers (to data and functions), function calls and runtime stack management, dynamic memory management in the heap, and the fork/exec system calls.

Prerequisites

PrerequisiteC or better in CMSC132 and MATH 141
CorequisiteCMSC 250(or equivalent)
Credits4

Course Coordinator

Name Office
Nelson Padua-Perez AVW 1203

For office hours and other contact information, visit the staff link.

Textbooks

Title Authors ISBN Type
Computer Systems: A Programmer's Perspective, 2nd edition R.E. Bryant and D. R. O'Hallaron 0-13-610804-0 Required
Pointers on C K.A. Reek 0-673-99986-6 Recommended

Course Topics (Subject to Change)

  • Unix Memory Model
  • Moving from Java to C
  • Pointers and dynamic data structures in C
  • I/O, standard libraries
  • Testing
  • Assembly Language
  • Process control
  • Systems programming
  • Program measurement and optimization
  • Multithreaded programming with pthreads
  • Libraries and linking
  • Dynamic memory management

Grading

Final grades will be computed according the following weights:

35% Projects(6)
16% Quizzes/Lab Exercises
24% Midterms(3) (8% each)
25% Final Exam

The weights of the individual projects are: (5%,6%,7%,6%,6%,5%)

Project Deadlines

All projects are due at 6pm on the specified day in the project description. You have until 9am of the next day to submit your project with a 20% penalty. Projects are to be submitted electronically using the submit server and not via e-mail.

Which Project Gets Graded

Your grade for an project will be based on the greater value of two scores: (1) The score on the very last compilable submission prior to the deadline; (2) The score minus 20% on the very last compilable submission prior to the late deadline.

Good-Faith Attempt

You must satisfy a minimum set of requirements for each project (Good Faith Attempt) otherwise you will not pass the course (automatic grade of F). Each project will define its own good faith attempt criteria and a deadline to provide an implementation that satisfies it. Additional details will be provided in the project description.

Closed Projects

Unless stated otherwise by the instructor, all programming assignments are to be written individually. Cooperation between students on exams, quizzes, or projects is a violation of the Code of Academic Integrity.

About Graded Material

Once we have graded any class material (e.g., exams, projects, etc.) we will post an announcement that the specific assignment has been graded, and the deadline by which you must submit any regrade request (if necessary). It is your responsibility to submit regrade requests by the specified deadline; no regrade requests will be processed afterwards.

Class Announcements

Class announcements are located at Class Announcements. You should check announcements often (at least once every day).

Computing Environment

OIT Grace Cluster

Programming will be done on the OIT Grace Cluster, in particular on the two Linux machines that can be accessed at linux.grace.umd.edu. Students will use their own Glue (also known as TerpConnect) accounts to access the Grace cluster and do coursework, so students who don't have a Glue account yet should request one online immediately by going to the following link:

http://www.oit.umd.edu/new/

Project Submissions

Project submission will be done using the same CMSC project submission and testing server used in earlier introductory courses, which can be reached at the following link:

https://submit.cs.umd.edu/

However, you will use a different mechanism to turn projects in to the server than was used in earlier introductory courses. Details will be provided later on. Unlike earlier courses, the program development environment will not be the Eclipse IDE, but rather command-line use of Linux.

While students may use other environments to develop their programs, to be judged correct, a project must build and work correctly on the Linux Grace systems, with the compilation method and compiler options specified for that project.

About Project Submissions

Projects must be submitted electronically using the CMSC project submission and testing server. Attempts to submit a project using any other means (such as an emailed project) will not be considered. Only the projects electronically submitted via the submit server can be graded; it is each student's responsibility to test their program and verify that it works properly before submitting, and to check a project's results on the public tests on the submit server after submitting it.

Project extensions will not be given to individual students as a result of system problems, network problems, power outages, etc., so do not leave submitting a project until just before it is due. It is strongly suggested you finish and submit your program at least one day early, to allow time to reread the project assignment and ensure you have not missed anything that could cause you to lose credit on the project.

Any hardcoding in a project assignment will result in a score of zero for that project. Hardcoding refers to attempting to make a program appear as if it works correctly and actually calculates and computes correct results, when for some reason it actually does not do so. Examples would include a program that prints the desired output instead of computing it, or a program that works only because it takes advantage of properties that the public test cases happen to have, etc. These are only a few examples; if you have any question about whether a particular situation would constitute hardcoding be sure to ask ahead of time.

Use of Laptops/Phones/Electronic Devices

  • Please, bring your laptop to your discussion (lab) session. If you don't have one we will pair you up with a classmate.

Academic Honesty

Note that academic dishonesty includes not only cheating, fabrication, and plagiarism, but also includes helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work. You are allowed to use the Web for reference purposes, but you may not copy code from any website or any other source. In short, all submitted work must be your own.

Cases of academic dishonesty will be pursued to the fullest extent possible as stipulated by the Office of Student Conduct. Without exception every case of suspected academic dishonesty will be referred to the Office. If the student is found to be responsible of academic dishonesty, the typical sanction results in a special grade "XF", indicating that the course was failed due to academic dishonesty. More serious instances can result in expulsion from the university. If you have any doubt as to whether an act of yours might constitute academic dishonesty, please contact your TA or the course coordinator.

The University of Maryland, College Park has a nationally recognized Code of Academic Integrity, administered by the Student Honor Council. This code sets standards for academic integrity at Maryland for all undergraduate and graduate students. As a student you are responsible for upholding these standards for this course. It is very important for you to be aware of the consequences of cheating, fabrication, facilitation, and plagiarism. For more information on the Code of Academic Integrity or the Student Honor Council, please visit http://www.shc.umd.edu

To further exhibit your commitment to academic integrity, remember to sign the Honor Pledge on all examinations and assignments: "I pledge on my honor that I have not given or received any unauthorized assistance on this examination (assignment)."

Excused Absence and Academic Accommodations

Any student who needs to be excused for an absence from a single lecture, recitation, or lab due to a medically necessitated absence shall:

  1. Make a reasonable attempt to inform the instructor of his/her illness prior to the class.
  2. Upon returning to the class, present their instructor with a self-signed note attesting to the date of their illness. Each note must contain an acknowledgment by the student that the information provided is true and correct. Providing false information to University officials is prohibited under Part 9(h) of the Code of Student Conduct (V-1.00(B) University of Maryland Code of Student Conduct) and may result in disciplinary action.
  3. This self-documentation may not be used for the Major Scheduled Grading Events as defined below and it may only be used for only 1 class meeting during the semester.

Any student who needs to be excused for a prolonged absence (2 or more consecutive class meetings) or for a Major Scheduled Grading Event, must provide written documentation of the illness from the Health Center or from an outside health care provider. This documentation must verify dates of treatment and indicate the timeframe that the student was unable to meet academic responsibilities. No diagnostic information shall be given. The Major Scheduled Grading Events for this course include midterm(s) and final exam.

It is also the student's responsibility to inform the instructor of any intended absences from exams for religious observances in advance. Notice should be provided as soon as possible but no later than the Monday prior to the exam for both the midterm(s) and the final.

Any student eligible for and requesting reasonable academic accommodations due to a disability is requested to provide, to the instructor in office hours, a letter of accommodation from the Office of Disability Support Services within the first two weeks of the semester.

Evaluation System (CourseEvalUM)

Your participation in the evaluation of courses through CourseEvalUM is a responsibility you hold as a student member of our academic community. Your feedback is confidential and important to the improvement of teaching and learning at the University as well as to the tenure and promotion process. Please go directly to the website (www.courseevalum.umd.edu) to complete your evaluations. By completing all of your evaluations each semester, you will have the privilege of accessing online, at Testudo, the evaluation reports for the thousands of courses for which 70% or more students submitted their evaluations.

You can find more information, including periodic updates, at the IRPA course evaluation web site

https://www.irpa.umd.edu/Assessment/CourseEval/fac_faq.shtml

Copyright

All course materials are copyright Pete Keleher and Jan Plane (and other CMSC faculty and instructors) © 2012. All rights reserved. Students are permitted to use course materials for their own personal use only. Course materials may not be distributed publicly or provided to others (excepting other students in the course), in any way or format.

Web Accessibility