Course Description and Goals
This course covers Internet programming in depth, including client-server and web applications. The primary goal of the course is to help students understand the principles of how distributed applications are built, while also giving them practical experience in creating common Internet applications. An important theme of the course is demonstrating that the Internet can provide many of the same services we have traditionally received from a desktop operating system, including access to applications, file systems, computing resources, and databases. Additional goals for this course include:
- Give students experience designing a variety of Internet applications, including client-server and web applications.
- Introduce students to concurrent programming models that are used for building scalable servers, including an emphasis on synchronization of threads and processes using both semaphores and message passing.
- Provide students with experience in using a workload-generation tool and conducting a performance evaluation of their code to better understand design tradeoffs and operating system overhead.
- Help students understand web programming concepts, including database connectivity, security, and identity. Expose students to both traditional page-driven and asynchronous web application frameworks.
To meet the goals of the course, students will complete lab assignments and several exams. The exams will consist primarily of written questions that ask the students to apply the principles of Internet programming to a given problem.
- Dr Quinn Snell – Office hours by appointment, 3366 TMCB – 422-5098 – snell at cs.byu.edu
- I will also be available via google chat at snellclasses at gmail.com
- TAs Michael Perucca , Jaysen Draney , Aaron Miller, Javid Pack
- Email the TAs at “cs360ta at gmail.com”
- TA Hours
Lab assignments will be designed to provide practical experience in creating a variety of Internet applications. An important theme of the labs will be their organization around the Internet, and specifically a web server, as a provider of services that we typically obtain from a desktop operating system. All of the labs will be built on top of the web server students write as part of the class.
Applications will include:
- A threaded web server: Help students understand basic client-server programming, and how to implement a protocol. Students will implement a fairly complete specification of HTTP, including CGI, GET and POST.
- A Model View Controller framework
- A web application: Students will implement a web application using the framework of their choice.
- You find security holes in an existing application and learn how to fix them.
Most of the material covered in the class can be found through Internet sources. There are some books that you may find helpful:
- UNIX Systems Programming by Kay A. Robbins and Steven Robbins ISBN-10: 0-13-042411-0 ISBN-13: 978-13-042411-2
- Unix Network Programming, Volume 1: The Sockets Network API, 3rd Edition, by W. Richard Stevens, Bill Fenner, and Andrew M. Rudoff.
- Programming the World Wide Web 2009 by Robert W. Sebesta ISBN 0-13-607663-7. This is a good book that will be helpful in the second half of the semester.
- Agile Web Development with Rails, 3rd Edition, by Dave Thomas and David Heinemeirer Hansson, 2007, ISBN 1-934356-16-6. This will help with building Ruby on Rails applications. The documentation on the Internet is nearly as good as this book, however…
- Programming Ruby: The Pragmatic Programmer’s Guide, Second Edition, by Dave Thomas, with Chad Fowler and Andy Hunt, Pragmattic Programmers.
We will do some significant C programming in the class. You might find the following books to be useful references for C/C++:
- Practical C Programming, 3rd Edition, by Steve Oualline, O’Reilly & Associates, August 1997, ISBN 1-56592-306-5.
- Practical C++ Programming, 2nd Edition, by Steve Oualline, O’Reilly & Associates, December 2002, ISBN 0-596-00419-2.
Your grade in this class will be based on your performance in the following areas:
Programming Assignments 50% Midterm 20% Final 20% Homework 10%
Each student will write their own code. Although you may work with other students on the assignments from a conceptual level, all of the coding should be your own.
Each student must pass off all of the programming labs to receive a C or better. Students who fail to pass off all of the programming assignments will have their final grade capped at C-.
The majority of the grade in this class is based on the lab assignments. These assignments are timed with the lectures. They need to be turned in on time so that students are keeping up with the topics discussed in class. As such, turning in work late is discouraged. To further motivate turning work in on time, late work will receive point deductions according to the following policy for individual assignments:
- 10% off per weekday (Weekends and holidays don’t count so, for instance, if a lab is due on Friday, you will get 10% off whether you finish it on Saturday or on the following Monday)
- e.g. If you are 1 day late and you only satisfy the 85% pass-off level, you would get 90% x 85% = 76.5% on the lab
- Maximum of 70% off for being late (So even if you are a month late, you could still get a 30% on the lab if you satisfy the complete pass off requirements)
There will be two tests during the course of the semester for students to demonstrate their understanding of the topics covered in the class. The midterm and final exam will emphasize the principles involved in internet programs as opposed to specific syntax.
Reading is fundamental to learning . I will expect you to thoroughly read each of the reading assignments before you come to class. This will promote discussion and learning. Homework assignments covering the reading material will be assigned throughout the semester. These questions will appear on exams and we will go over selected homework during class.
Cheating in any form will not be tolerated. This includes copying any part of a programming lab. Students caught cheating will receive a failing grade for the course and will, when appropriate, be referred to the Honor Code office.
Systems Abuse Policy
Accounts on the Computer Science Department computers are privileges to be used in conjunction with and in support of various related Computer Science classes. Abuse in any form will result in immediate suspension of your accounts(s). If an abuse involves violation of the honor code, you will be referred to University Standards. If an abuse involves illegal activity, appropriate authorities will be notified. In either case, you will be immediately dropped from all Computer Science Classes you are enrolled in. Some violations are punishable by expulsion from the University. Your keystrokes may be monitored and saved.
Examples of abuse of your account include:
- Transfer or storage of pornographic or illegally duplicated material.
- Use of your account to probe or crack security systems, including passwords, or to intercept information intended only for others.
- Sending mass, commercial, Obscene, or harassing email or Usenet news posts.
- Sharing your account or account password with anyone.
- Misusing your lab privileges, including game playing, and especially actions which could cause damage, such as rebooting a workstation.
Preventing Sexual Harassment
Title IX of the Education Amendments of 1972 prohibits sex discrimination against any participant in an educational program or activity that receives federal funds. The act is intended to eliminate sex discrimination in education and pertains to admissions, academic and athletic programs, and university-sponsored activities.Title IX also prohibits sexual harassment of students by university employees, other students, and visitors to campus.If you encounter sexual harassment or gender-based discrimination, please talk to your professor; contact the Equal Employment Office at 801-422-5895 or 1-888-238-1062 (24-hours), or http://www.ethicspoint.com; or contact the Honor Code Office at 801-422-2847.
Students With Disabilities
BYU is committed to providing reasonable accommodation to qualified persons with disabilities. If you have any disability that may adversely affect your success in this course, please contact the University Accessibility Center at 422-2767. Services deemed appropriate will be coordinated with the student and instructor by that office.
Children in the Classroom
The serious study of the physical and mathematical sciences requires uninterrupted concentration and focus in the classroom. Having small children in class is often a distraction that degrades the educational experience for the entire class. Please make other arrangements for child care rather than bringing children to class with you. If there are extenuating circumstances, please talk with your instructor in advance.