NOTE: We are transitioning this course to a web-based format, which relies on eCAMPUS and on code development on GitHub. As we transition, this page will change. This will be a smooth transition for you, and you will be updated as we proceed. The first changes that you will experience will be the requirement to develop your code on GitHub. As soon as we have the infrastructure ready, you will be informed on how to proceed to start developing code.
The objectives of this course is to make you familiar with the general architecture and the most important components of modern operating systems. You will leverage your knowledge acquired in your previous courses on Computer Architecture and Computer Systems to understand (and to some level implement) aspects of operating systems, such as memory management, persistent storage and file systems, threading, scheduling, and resource management in general. You will understand fundamental approaches to virtualization and what it takes to build a distributed file system. We will discuss general aspects, realization approaches, and case studies in class. In addition, we will implement a simple operating system that will be able to boot and run on a bare PC.
Over significant portions of the course (see below) we will follow this textbook closely. Purchasing it for the course is therefore highly recommended.
These books complement the textbook. Perusing them may help you better understand some issues discussed in class.
Class time will be partitioned into lectures proper and project sessions. During lectures we will be covering OS concepts and case studies. During the project sessions we will be discussing project assignments and the infrastructure needed for the projects.
We plan to go over the following material in this class, roughly in the following order:
Note: The items marked with a (*) not be covered in the textbook or will be covered in a significantly different fashion than in the textbook.
The material covered in this course is quite dense, and some time will be required for project discussions. Expect therefore that some of the material will have to be studied in form of reading assignments.
In this course we will not only talk about operating systems; we will actually build one (at least portions of it.) You will get into writing some rather sophisticated code. While doing this, you will realize that writing OS code is to programming your typical application like NASCAR racing is to driving your mom-in-law to Sunday brunch. If you need somebody to hold you by the hand (like, memory protection) you will be in really bad shape. You will either have to learn to live without, or you will write your own. But the fun part is that you will learn how to nurture a CPU (or multiple CPUs) from the moment it wakes up until it has access to sufficient support infrastructure to run user programs on its own.
Details about projects are being finalized and will be made available soon. Stay tuned.
There will be one midterm and one final examination. The midterm will be in-class, and the final will be during the allocated time during Final's Week.
All tests will be closed-book. You will be allowed one hand-written "cheat sheet" of size 8.5in x 5.5in. No other aids will be allowed, except for writing utensils.
This couse will have two tests (200 + 250 = 450 points,) a series of projects (totalling 450 points,) and several homeworks (totalling = 100 points).
The grading scale looks as follows:
A: 901 - 1000 points
B: 801 - 900 points
C: 701 - 800 points
D: 601 - 700 points
F: 0 - 600 points
We expect that the projects (and perhaps the tests) will have some bonus points. These will be difficult to get, so don't count on them.
Note on Grading Scales: The exams are graded on an absolute scale, i.e. you are given up to 200 points for the midterm and up to 250 points for the final exam. Homeworks and Projects, however, are graded on a relative scale: Every homework will give up to 100%, same for the projects. The final grade is calculated by normalizing the homeworks relative to 100 points and the projects relative to 450 points. (For example, if you make 100% in all projects, you will receive 450 points.)
Machine problems and homeworks are to be handed in on eCAMPUS (see here).
Note: The machine problems are very demanding, and they will require dedication and time.
All the submission deadlines have included extra time for the consideration of accidental events such as (not limited to) unavailable resource (machines are down,) sickness of students, stock market collapse, distress due to the Aggies loosing a game, etc. This means that additional extensions are generally not granted. The rule of the game: START EARLY!
Both homework and projects will be submitted on eCampus. Unless stated otherwise, lateness is penalized with 1/5 of the earned points of the item per calendar day. (During Summer 5-week terms the penalty is 1/3 per calendar day.) Lateness penalty starts at the deadline and is pro-rated. This means that you will incur a penalty of approximately 0.0139 percent (0.0231 percent in Summer) for each minute that you are late in turning in your submission.
No make-up work submissions will be accepted.
Both the instructor and the teaching assistant for this course will do their best to communicate relevant administrative information (deadlines, information about posted material, details about projects, locations of tutorials, and so on) in an effective and timely manner. We will be using anouncements in class, e-mails to students, postings on the web site, and discussions, chats, and posted grades on eCampus.
Having said that, keep in mind that this is not a distance education course! You are expected to be current with the material covered in class and with any announcements made in class. In fact, announcements in class will override whatever information has been made available through the other channels. The instructor and TA cannot be held responsible for not conveying important information to students who did not attend class.
Note on the use of eCAMPUS: We will make use of eCampus in this course to post machine problems and homeworks and to post grades for your submissions. You can access eCAMPUS here. You will need your NetId to log into the CSCE 410 class.
We will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates and myself. If you have questions, consider posting them on Piazza. This will give everybody a chance to contribute.
Find our class page at: piazza.com/tamu/spring2017/csce410/home.
The signup link is: piazza.com/tamu/spring2017/csce410.
Note on e-mail etiquette: E-mail is a very convenient and potentially effective way to communicate with instructor and TA, but only if used in a professional manner. Keep in mind that -- in particular when a deadline is looming -- we are receiving many e-mails, and all senders expect immediate turn-arounds. Therefore, keep your e-mail short and to the point; indicate that you have done some thinking *before* typing the e-mail; provide necessary support documentation (e.g. code sections) when needed (don't attach huge amounts of code!); follow standard basic rules for courteous and professional communication; proofread your e-mail before sending it out. We will not answer e-mail that does not follow these rules. Repeated offenders will be added to the spam filter.Note on how to ask questions: Here are two links to collections of recommendations on how to best formulate and ask questions. (Note that the pages linked by the URLs below are not maintained by us, and neither us nor TAMU bear any responsibility for what you may encounter there.)
It goes without saying that the highest level of academic integrity is expected for students in this class. While discussions among students on the analysis of problems and on the development of general solution approaches is welcome (encouraged, in fact; feel free to use the discussion groups and chats on Piazza) the realization has to be of the individual student. Spelled out, this means:
How do we determine that plagiarism has happend? We will delegate our decisions to code similarity-detection tools and automated plagiarism detection tools. Whenever a tool flags your submission, we will treat it as a potential case of plagiarism and we will issue a report to the Aggie Honor System Office. So, to be safe, stay away from other students' code and from homework solutions that are not your own!
The Americans with Disabilities Act (ADA) is a federal antidiscrimination statute that provides comprehensive civil rights protection for persons with disabilities. Among other things, this legislation requires that all students with disabilities be guaranteed a learning environment that provides for reasonable accommodation of their disabilities. If you believe you have a disability requiring an accommodation, please contact the Department of Student Life, Services for Students with Disabilities in Cain Hall, Rm. B118, or call 845-1637.