CSCI-4969/6966 Networking In the Linux Kernel Syllabus

Instructor: Buster Holzbauer ()

Office Hours: Amos Eaton 205, Tuesday and Friday, 2pm-4pm (and by appointment)

Piazza: https://piazza.com/rpi/fall2017/csci49696966

Assignments and lectures will be posted on Piazza. In addition, Piazza will be used for announcements and is a great place to have discussions since some of the bugs we encounter are going to be very difficult to resolve and learning from others' experiences will be invaluable.

Pre-requisites: CSCI-4210 Operating Systems/equivalent, or instructor permission.

Topics: Kernel organization, TCP/IP fundamentals, kernel development process, common kernel macros/data structures, kernel networking data structures, network programming basics, network utilities, more as time allows

Expectations, Classroom Time, Attendance: This is an advanced topics course, so it is expected that you are comfortable with C programming, operating systems concepts, and common data structures. If you are not, it will be your responsiblity to "catch up" if you remain in the course. That being said, it is the only kernel course currently offered here, so we will move slower through kernel-specific concepts.

Since this is a new course, the first time is going to be more of a "pilot". That does not mean we will treat the course more casually, but projects and organization will likely need tuning as the semester progresses. As such, attendance and participation in lecture will be a highly important component of the course. You are expected to regularly attend lecture, ask questions, and participate in in-class discussions.

There will be smaller independent assignments, but the majority of the projects will be team-based. You are not required to work with the same partner each time. All team members are expected to contribute to the assignments, both in code and writeup.

The course is not currently designated as communication-intensive, however we will be experimenting with components that would let us designate is as such in the future. It is possible but not guaranteed for this course to retroactively gain the communication-intensive label. What this means for students is that there will be written work graded both on clarity and quality. You may want to leverage resources such as the Center for Communication Practices (CCP) based in the Folsom Library to help with your writing.

Grading:

The grading scheme might change slightly but the approximate breakdown is:

I expect to hand out A, A-, B+, B, B-, and F grades. Coursework that would normally be "barely passing", i.e. "C or D quality work" is unacceptable in an advanced options course like this one. That being said, as long as it is apparent you have put in effort, made progress towards learning objectives, and have been participating in the course, you should not end up failing.

The grades may be curved - I will use Rainbow Grades in conjunction with Submitty to report grades and reflect the curve. There will be approximate A, B, and failing boundaries updates as the course progresses.

Late Work Policy: There are no late days in this course, all work is expected to be submitted by the deadlines provided in assignment handouts. If you have a legitimate excuse you should get it approved through Student Experience / your class dean.

Books and Resources: There are many resources out there on kernel development, however very few of them are kept up to date. We will be developing on a 4.4.x kernel, so use caution when looking at older information.

Downloads: Kernel References (No books are required): Other Helpful Links:

Laptop Policy: Laptops are not to be used during lecture except during presentations or in-class programming time. An announcement will be made if it is expected that you bring your laptop to class for a particular lecture. Exceptions to this policy can be discussed with the instructor.

Academic Integrity: While I strongly encourage you to form study groups and work together in learning this material, the course project, homeworks and programming assignments are to be done individually unless otherwise noted by the assignment/project specification. What this means is that you should do whatever is necessary to ensure your work remains your work. If during in the grading process, it is determined that students shared or duplicated work, those students will automatically score a zero for the offense. For a second offense, the student or students involved will fail this course. Each time, a report will be sent to the Dean of Students office which could result in additional disciplinary action. Additionally, undergraduates offenders cannot mentor in the future. In the event a graduate student is caught cheating, that student will fail.

Due to the nature of this course, sometimes we will need to share specific bits of code to ask questions. When in doubt, share less and wait for permission to share more, or consult the instructor directly. You should not share any patch files or completed assignments with peers, except those currently on your team.

Learning Outcomes: Students who have successfully completed this course will:

Schedule: This will be updated as the semester progresses:

All due dates refer to 11:59:59 PM unless otherwise specified.