Spring 2006 - Jan. 10 to Apr. 27
Tues. and Thurs., 3:30-4:45 PM, room EC118.
How is my teaching? Review this class anonymously at TeacherReviews.com.
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
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.
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:
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 firstname.lastname@example.org test 192.168.0.1 DNS at 192.168.0.1 reports mailbox for yahoo.com is mx1.mail.yahoo.com at 126.96.36.199 Connecting to SMTP at 188.8.131.52 ... 250 OK Sending message to matmahoney with subject "test" Enter message text, ending with . on a line by itself... hello, 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.
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.