Instructor | Office, Phone, & Office Hours | Class Meetings | |
Prof. Xiannong Meng | xmeng at bucknell dot edu | Dana 212, x7-1214, M 2-3 p.m., T 9-11 a.m., W 2-4 p.m. R 8-9 a.m. |
Lecture: MWF 11:00–11:52 p.m. Dana 132 Lab: T 1:00–2:52 p.m. Dana 164 |
Principles and design of networked computing systems and application programs. Topics include reliable communications, medium access control, routing, congestion control, and networked applications. Prerequisite: CSCI 311. Corequisite: CSCI 315 or permission of the instructor.
CSCI 363 is an advanced Computer Science elective at Bucknell. The course focuses on developing an understanding of network design principles, particularly on the software architecture of the protocol stack and the development of protocols.
The primary goal of the course is to understand the design principles of networking software. You should see this course as an opportunity to apply what you've learned in computer science to reason critically about networking technology. A second goal is to learn the details about the existing protocols in use today. We will spend a good portion of our time on this pursuit. It is important for you to learn to read and understand protocol standards so that you can write new implementation or to modify an existing code base.
Expected student work includes lab exercises, programming projects, exams, and active class participation.
Main textbook:
Main reference books:
Other reference books:
There will be weekly lab exercises. Lab exercises usually involve relatively short programming on a particular topic. Lab assignments are due 11:55 p.m. on the specified due date, typically in a week time. Some lab exercises may take more than two hours to complete. See the lab descriptions for details.
Though discussion is encouraged, lab exercirses are individual work, meaning they have to be completed by each individual student. Specifically lab exercises are collaborative discussion type of work (see Conduct Rules for details.)
The course will have two projects. The first project will be an application program that follows the client-server model. The second project will be a program that emulates a part of the protocol stack involving packing and unpacking the contents to and from an application, and then deliver and receive the packets at both ends of the network. See the respective project descriptions for details.
Project assignments are team work. All members must be actively participating the work. Students may choose to work alone. If working as a team, the team must be formed prior the beginning of the project and cannot be changed in the duration of the project. Team member contributions to the project must be documented. See Conduct Rules for details.
There will be two one-hour mid-term exams and a comprehensive final exam. The dates of the two exams are shown in the class schedule. The final exam will be given at the time scheduled by the Registrar's Office. If you miss an exam due to illness or some other unavoidable circumstance, you will need a written justification for the absence. In the case of a justified absence, make-up exams will be given as long as the student has not communicated with anyone in the class about the exam.
All students are expected to attend class and scheduled labs: poor attendance (either in class or lab) will have an adverse affect on your grade. Absences may be excused if you send me email in advance I understand that people get sick, have to travel for interviews, etc. However, every four unexcused absences will cause a one third letter reduction in the final grade (that is, if you end up with B+, but have four unexcused absences, your final grade for the course will be B). There are two reasons for this policy. First, I view our classes as shared experiences in a community of learners (all students and the instructor); if you're not there, you are not sharing and the we all lose. Second, every student has to take responsibility for their role in the learning process. Being absent for no reason shows that you're not taking this responsibility seriously.
Also, note that you will earn a portion of the grade for participation in the class. This component of your final grade is determined by how invested you are in our class meetings and labs. Ask and answer questions posed by the instructor and your colleagues, put ideas out for discussion, and bring up points that you have learned outside the classroom or discovered in the technical media. The point is for you not to fade into the background; you are expected to be actively engaged in the class.
The grade are distributed as follows.
I want to hear your thoughts on how much you're learning in this course. If you find something exciting that we didn't mention in the class, I'd like to hear from you. If you are struggling with the material, please let me know sooner rather than later. Problems which might be resolved somewhat easily when they are just identified can lead to much hardship if left alone for long. Make the best use of our contact time in regular classes and labs. Visit me in my office often.
You should feel safe to give me constructive criticism. Although I will work hard to make this course be a good experience for everyone, it wont be really great unless you give me feedback to make adjustments to maximize effectiveness.
I will do my best to help you reach the learning objectives in this course and to help you grow your enthusiasm for studying computer science. If you have previous knowledge of topics in this class and feel that you could use a bigger challenge to motivate your learning, make sure to let me know and we will work together to identify something productive for you to pursue.