CSE4232/5232 Network Programming Syllabus

Florida Tech, Spring 2006 - Jan. 10 to Apr. 27
Tues. and Thurs., 3:30-4:45 PM, room EC118.

Course description

CSE 4232/5232 - Network Programming Prerequisites: Java programming, familiar with Unix or Linux


Matt Mahoney, mmahoney@cs.fit.edu or if that doesn't work, then matmahoney@yahoo.com Office hours are immediately after class.

How is my teaching? Review this class anonymously at TeacherReviews.com.

Mailing list

After your first class you will receive an invitation to join the class mailing list FIT-CSE4232. After you reply to the invitation you will be able to read and post messages to the class. You will be responsible for material posted to this list. To post a message, mail to fit-cse4232@googlegroups.com. If you have a Google account you can also read and post messages at groups.google.com/group/fit-cse4232



Grading will be based 50% on homework and 50% on tests. Graduate students only (CSE5232) will write a term paper (about 3-6 pages single spaced) and give a presentation during the last 2 weeks of class. For graduate students the homework grade is based 30% on regular homework and 20% on the paper.

Homework: Homework handed in late is penalized 20% per day, including non class days, weekends, and holidays. Homework should be emailed to me. Not all homework will be graded or collected, but you are still responsible for knowing the material.

Programming assignments may be written in Java 5.0 or an earlier version if you prefer. Grading will emphasize good style, readability, and documentation, especially the requirements or user's guide, which describes what the program does from a novice user's point of view.

Homework should be an individual effort. Projects worked on as a group with proper acknowledgement of other group members are only worth 80% as much as an individual effort for groups of 2 or 75% for groups of 3. Larger groups are not allowed. The entire group should turn in only one copy of the homework, and all group members will receive the same grade. Copying homework or allowing your homework to be copied otherwise is a violation of the Florida Tech. Computer Science Honor Code.

I recommend submitting homework early for comment. You may resubmit at any time until the due date. I will only grade the final version. This is an easy way to avoid costly mistakes.

Tests: All exams including the final exam will count equally toward your grade after dropping the lowest grade. There will be no make-up exams for any reason. All tests are open book and open notes. Test dates:

Exam 1 solution
Exam 2 solution
Exam 3 solution
Final exam solutions

Spring 2000 Syllabus

Homework 1

Due Sun. Feb 12, midnight (30% of homework grade). Create a webpage containing an applet that works like a simple text editor. When the user clicks in the applet, the cursor is positioned at approximately that point. When the user types, characters appear on the screen. The Backspace and Enter keys should work normally. Add a button to clear the screen. Include a means of changing the font size, such as a drop down menu, slider, or textfield where the user can enter a number.

Some of these requirements are vague. Include on your webpage a more detailed specification than the one I gave you. I recommend you write this before you write any code. Think carefully about what details I omitted.

If you do not have a website, you will need to create one. It can either be on an FIT server or your personal site. Email me the java source code for the applet and a link to your web page. Do not post the source code until after the due date.

Homework 2

Due Thurs. Mar. 2, midnight (30% of homework grade). Write a program in Java that tests a webpage for broken links. Your program should take a URL as input, find all of the links on that page, test each one and report whether they link to a valid web page. Report all errors for both the input URL and for the URL of each link (unknown host, connection refused, page not found, forbidden, etc). Your program should cope with all the ways a link might be written, such as upper/lower case, with or without quotes, with or without the http: protocol, absolute or relative paths, ports other than 80, line breaks in the link, HREF is not the first value after the <A tag, CGI encoding, and so on. Test thoroughly on many web pages.

If a link leads to a page that redirects to another page with a HTTP 302 code, then test the redirected page and report the redirection. You do not need to follow redirections that use javascript or META tags.

Test all pages simultaneously in separate threads so that each test result can be reported as soon as possible. Use a reasonable timeout (10-30 seconds) in each thread. Be sure to synchronize the output so that only one thread prints at a time.

Your program can either use a GUI or run from the console. Be sure to document in the program requirements in your source code how the program should be run. I suggest the following intermediate goals:

Homework 3

Due midnight Sun. Apr. 16 (40% of homework grade). Write a program to send email by connecting to the recipient's SMTP server. Your program should be a console application and take arguments as follows:
  java Sendmail <address> <subject> <DNS-server>
Your program should first query the DNS IP address given by the third argument on UDP port 53 for the MX record IP address of the hostname part of the address. It should then connect to the SMTP server at that address on TCP port 25 and send mail from standard input to the recipient. Use the second argument as the subject. The input terminates with EOF or a . on a line by itself. Your program should report the responses from both the DNS server and from the SMTP server and whether or not the message was sent successfully. For example:
  java Sendmail matmahoney@yahoo.com test
  DNS at reports mailbox for yahoo.com is mx1.mail.yahoo.com at
  Connecting to SMTP at ... 250 OK
  Sending message to matmahoney with subject "test"
  Enter message text, ending with . on a line by itself...
  this is a test.
  Message sent successfully.

Example nslookup of MX captured with SNORT
RFC 1035 (DNS packet format)

Your program should be fully contained in one file named Sendmail.java and sent to me by email.

Term Paper and Presentation

The term paper and presentation is required for graduate students and may be used as extra credit for undergraduate students. For graduate students, grading is based on 100 homework points = 30% of grade, 20% for the term paper and presentation, and 50% for exams. For undergraduate students, the term paper is worth 15 extra credit points added to the 100 homework points. The presentation is worth 5 extra credit points. In other words:
  Undergraduate grade = (sum of homework)*0.5 + (sum of best 3 exams)/6.
  Graduate grade = (sum of homework)*0.3 + (term paper and presentation)*0.2 + (sum of best 3 exams)/6.
The sum of homework can be up to 120 points for undergrads and 100 points for graduate students.

The paper is due midnight Thurs. Apr. 27 for everyone. Graduate student presentations will be Apr. 20, 25, and 27, lasting 15 minutes each. The first 5 undergraduate students who notify me that they wish to give presentations will give them on Apr. 13. The next 5 will give them Apr. 11, and the last 5 on Apr. 6.

The paper and presentation should describe a network protocol. Discuss the design goals (security, performance, providing a new service, ease of use, etc.), how these goals were met or not met, how the protocol works, and the extent of its use (many protocols were designed but never implemented). For example, you may describe how a protocol was modified to thwart a type of attack or security vulnerability. You might describe a cryptographic protocol and discuss its strengths and weaknesses. Whatever topic you choose, it should convey an understanding of how the protocol works. When you decide on a topic, email me and I will schedule your presentation.

The paper should be 3 to 6 pages, single spaced. When citing references, give the author's name, year, and name of the publication, even if the reference is a website. Printed publications (journal or conference papers or book chapters) are preferred. Papers will be graded on the depth of your research, the degree to which you convey an understanding of the material, and clarity of presentation in English. If you have trouble with English, get another student to proofread your paper. Submit papers by email in .doc, .pdf, or .ps format.

If you would like me to comment on a draft of your paper, please send it to me by Apr. 22. Drafts sent after that date might not get a response. Any draft sent to me on Apr. 26 or 27 will be graded as your final version.

Presentations should be 15 minutes, about 5 to 7 HTML or Powerpoint slides on your website or some other place where you will be able to access them over the internet during class.