Syllabus
CSSE/MA479 – Cryptography

General Course Information

Course catalog description

Introduction to basic ideas of modern cryptography with emphasis on mathematical background and practical implementation. Topics include: the history of cryptography and cryptanalysis, public and private key cryptography, digital signatures, and limitations of modern cryptography. Touches upon some of the societal issues of cryptography.

Less-formal description

This course looks at the mathematical aspects of cryptography, including historic ciphers, DES, RSA, and digital signatures. Assignments will include programming various algorithms and written homework applying various algorithms and investigating how to break various algorithms. The weekly schedule can be found here.

Prerequisites

Meeting time and place

Instructor

Matt Boutell – Assistant Professor of Computer Science and Software Engineering

Email: boutell (at rose)
Office phone: 812.877.8534
Office address: Moench F-222
Home page: http://www.rose-hulman.edu/~boutell
Office hours: I am usually in my office every day from 8 a.m. until 5 p.m. unless I'm in class or a meeting. Please stop by whenever. If my door is shut, just knock.

Teaching Assistant

Texts and software

Required text

Introduction to Cryptography with Coding Theory by Wade Trappe and Lawrence Washington. My past students and I have found this to be an excellent text.

Prentice-Hall; ed. 2 (2006). ISBN-10: 0-13-186239-1

See website for details, errata, and example code.

Recommended software
Most of you know multiple languages. I recommend you try to use the right tool for the job.
  1. For RSA and large primes, use Maple for its number theory capability
  2. For quick and dirty calculations using matrices and modulus operators, use MATLAB. (This especially helps with the first couple chapters, where the text provides code.) Tutorial
  3. For DES and SHA-1, you'll want bit operators. C, C#, and Java are all reasonable choices here. (Python is correct, but is vvverrrrrryyyyy slow.)
  4. I will provide support for no specific language. The text has lots of good code in Maple and MATLAB.

Course Materials

I'll use Angel to post grades, dropboxes to submit homeworks, and links to the course schedule, assignment descriptions, slides, and handouts. All the linked materials are available via any of the several mechanisms for accessing Public AFS data. Thus, you can get to the majority of course materials here:

Grading

I plan to use this weighting scheme when assigning final grades:

Criteria Weight
Daily Quizzes 5%
Weekly assignments, including written and programming problems 45%
Exams 35%
Term Project 15%

Letter Grades

I will do my best to conform to the Rose-Hulman definition of the various grades, as described in the Academic Rules and Procedures. Note in particular that the phrase "thorough competence to do excellent work" appears there in the description of the "B" grade, and it further states that "B" and "B+" will not be given for mere compliance with the minimum essential standards of the course. The criteria for an A are even higher!

Citizenship Counts!

I may adjust your overall average up or down by up to 5 points, based on your class citizenship. This includes attendance, promptness, preparation for class, positive participation in class, constructive partnership in labs and projects, and timely completion of various surveys.

The in-class time in this course constitutes an important learning experience. Unexcused absences will affect your citizenship grade. After three unexcused absences, you must discuss continuation of the course with the instructor. Subsequent unexcused absences may result in automatic failure of the course, at the instructor's discretion.

Late Policy

Each student starts the term with two "slip-days" in his/her account. One slip-day, used on any lab, project, or homework assignment (unless specified otherwise), grants a 24-hour extension. It is up to the student to turn in work within that time frame, if it falls on a non-class day. Moreover, you may deposit a slip-day by turning in an assignment at least 24 hours early. Only one slip day may be withdrawn or deposited on any given assignment. Slip days may not be used on daily quizzes. Students should fill out the ANGEL survey (in the drop box folder) when depositing or withdrawing a slip day. Once the slip day period is past, no credit will be given for any assignment.

Communication and getting help

This term we will be using Piazza for announcements and class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TAs, and the instructors. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. Bookmark our class page:

https://piazza.com/class#spring2013/cssema479

 

I expect you to check your email/piazza daily (except one weekend day). When I send mail to you, I will use your Rose-Hulman address. If you do not currently read mail that is sent to that address, please have it forwarded to wherever you read mail.

Electronic Distraction Policy

I do my best to keep class interactive. But I recognize that sometimes it is hard as a student to stay focused on the class. With laptops in class, there are many more ways to become distracted. Unfortunately these distractions are much more pernicious, since it is very easy to get drawn into things like Facebook, IM conversations or RSS feeds.

I strongly encourage you to turn off IM and email software and only use other software for things directly related to class. If you choose to use non-class-related software during class, then you must sit in the back row. Doing so will prevent your classmates from being distracted by what is on your screen. 

Integrity

Recall the Institute policy on academic misconduct:

“Rose-Hulman expects its students to be responsible adults and to behave at all times with honor and integrity.”

Exams, written homework, and some labs and projects will be done on an individual basis. The simple rule of thumb for individual work is:

Never give or use someone else's code or written answers.

Such exchanges are definitely cheating and not cooperation. The departmental statement on academic honesty has more detailed advice.

I encourage you to discuss the problems and general approaches to solving them with other students. However, when it comes to writing code, it should be your own work (or the work of your group if it is a group or partner assignment). If you are having trouble understanding how some library code works or pinning down a run-time or logic error in your program, by all means talk to someone about it.

If you use someone else's ideas in your solution (or any other work that you do anywhere), you have to:

If you are ever in doubt about whether some specific situation violates the policy, the best approach is to discuss it with your instructor beforehand. This is a very serious matter that I do not take lightly. Nor should you.

In general, you should not look at another student's code to get ideas of how to write your own code. Beginning the process of producing your own solution with an electronic copy of work done by other students is never appropriate.

Plagiarism or cheating will result in a negative score (i.e., less than zero) for the assignment or exam. Egregious cases will result in a grade of "F: for the course. More importantly, such dishonesty steals your own self-esteem. So don't cheat.

Developed by Matt Boutell, format and lots of wording courtesy of CSSE120 instructors.