Colorado State University Pueblo, Spring 2021
CIS 491 — Special Topics, Introduction to Cryptology: Basics to Blockchains
Course Schedule & Homework Assignments

This is a mostly asynchronous course, but synchronous events (always optional) for the course will be noted below on the corresponding date.

New material will drop every Monday at noon local time for the week and will always be available through links on this page, as will be the assignments. Assignments are generally due by the next Monday, usually to be turned in through BlackBoard.

While the material for a week will drop on Monday, if there is anything that needs to be changed — such as fixing an error some assignment or changing a time of a synchronous meeting — this page might be changed during the week. Therefore, it is always a good idea to check in here before doing an assignment or looking for a synchronous event (such as online office hours).

Here is a link back to the course syllabus/policy page.


Week 1: Getting started with this course, the subject of cryptology, and a programming environment for coursework.

Content:

  1. Organization of this course:
    1. You might like to watch a sort of trailer for this course which talks about what it will cover and why this is interesting and useful.
    2. It would be foolish not to acknowledge that this course is happening in a very difficult time. Here is a video which discusses how we can try to be flexible with, and supportive of, each other in this crazy moment.
    3. Read the course syllabus.
    4. We will be using the web annotation tool hypothes.is in this course, lets start by annotating the syllabus! To get started with that, go to the hypothes.is "Getting Started" page and follw the instructions either to add the Chrome extension, if you use that browser, or the bookmarklet, if you use another browswer.
    5. Follow invitation link in the Using hypothes.is item of BlackBoard's Getting Started page for this course and join the private group called CSU CIS 491 Spring 2021.
    6. Always do annotation for this course in that private hypothes.is group! Note: if you use hypothes.is through BlackBoard in other classes, your account will be different here from there. This account you are being asked to make is useable all over the Internet and not only through CSUP's BlackBoard site. The account and the private group CSU CIS 491 Spring 2021 in which you are asked to annotate for this course, are completely distinct from anything built automatically by CSUP's automatic Bb/hypothes.is integration.
    7. Go to the course syllabus and start hypothes.is (you may have to login).
    8. To show that you have set up hypothes.is correctly, make some annotation on the course syllabus. Annotate in any of the following ways:
      • Note something that wasn't clear, by posing a question in the annotation which your instructor will answer.
      • If there is anything you particularly like, or particularly dislike, in the course organization, make an annotation to that effect.
      • If there is any addition, subtraction, or change in the syllabus that would make it clearer or make the class more effective for you, please make an annotation to that effect.
      • If you find any typos or other mistakes, point them out in an annotation.
      Don't forget that your annotations will be visible to everyone in our private group, but to no one else on the web.
  2. One-on-one meetings between students and instructor: your instructor would like to know some things about your background and experience with languages and platforms. Please send an email to jonathan.poritz@gmail.com giving the following information:
    1. What computer languages do you know, and how well do you know them?
    2. In particular, do you have any experience with Python?
    3. Have you used Linux?
    4. Do you have reliable access to a machine running Linux and connected to the Internet?
    5. While we're at it, please list some days and times during the week that you would be able to drop in for office hours or working sessions with your classmates and professor, so that times can be set up which are most convenient for everyone (even if these times are optional).
  3. Setting up a comfortable programming platform for working on course projects
    1. Please try to come to office hours on Monday or Tuesday to discuss this with your instructor. If you cannot make those times, try to find another time you can meet your instructor by emailing some possibilities to jonathan.poritz@gmail.com.
  4. Building a common understanding of the scope and fundamental problems of the subject of cryptology and, in particular, some basic terminology. For this, read in this open textbook the following:
    1. Chapter 4 intro on page 55.
    2. Section 4.1, pp. 55-58
    3. The first page of Section 4.2, being page 60, stopping before Definition 4.2.2, on the sentence which ends "...early modern period."
  5. First programming task of this week: write code which implements the Cæsar cipher, both encryption and decryption, with any key (=displacement in the alphabet). You will have to think about how to handle non-alphabetic characters, upper and lower case, etc. ... or will you?
  6. The next step we want is to do cryptanalysis of the Cæsar cipher.
    1. How many possible keys are there for the Cæsar cipher?
    2. Would it therefore be practical to try the brute force attack, of trying to decrypt with all possible keys? How long might that take? How exactly would you do it?
  7. What about if you wanted to take the humans entirely out of the cryptanalysis process? Can we do it entirely without human supervision?

Time-bound activities:


Week 2

Content:

Time-bound activities:


Week 3

Content:

Time-bound activities:


Week 4

Content:

Time-bound activities:


Week 5

Content:

Time-bound activities:


Week 6

Content:

Time-bound activities:


Week 7

Content:

Time-bound activities:


Week 8

Content:

Time-bound activities:


Week 9

Content:

Time-bound activities:


Week 10

Content:

Time-bound activities:


Week 11

Content:

Time-bound activities:


Week 12

Content:

Time-bound activities:


Week 13

Content:

Time-bound activities:


Week 14


Week 15

Content:

Time-bound activities:


Week 16