Code, Software, and Computation

Developing digital literacy.

Get Started

Topics

Code, Software, and Computation is a course taught through the Experimental College at Tufts University.

1/25, 1/27

In this introductory week, we will go over class expectations, discuss the progression of the course, and begin exploring core computer science concepts. We will also explore some of the computation problems that will motivate exercises and discussion throughout the semester, including

  • Natural Languages and Zipf's Law
  • Automation of Tasks, from the Rote to the Complex
  • Scientific Simulations
  • Encryption and Security

Assigned: Getting Started.

2/1, 2/3

This week, we will investigate the ways people express computation, both to people and to machines. We will explore the limits to both, and learn about the process through which we write programs. We will then begin using Python, first with the Read-Evaluate-Print-Loop (REPL) paradigm, and then with constructed source code.

Topics

  • Python Syntax
  • Variables, Types, and Objects
  • Expressions
  • Input and Output
  • Functions

Assigned: Your First Programs

2/8, 2/10

Continuing from the previous week, we will begin a deeper study of logic, branching, and control flow. We will explore the compounding effects of binary decisions and learn to translate real-world processes into code. With this knowledge, we will begin to explore strategies for storing and accessing data.

Topics

  • Loops and Branches
  • Tuples, Lists, and Dictionaries
  • Boolean Logic

Assigned: Word Frequency

2/17, 2/18

Armed with our new knowledge of data structures, control flow, and functions, we will learn to separate components into discrete modules, and explore strategies for managing complexity using objects.

Topics

  • Modules
  • Objects and Classes
  • Packages and Package Managers

Assigned: Code Talking

2/22, 2/24, 2/29, 3/2

Using the skills we've developed during the first four units, we will shift our focus to constructing entire programs.

Topics

  • Componentization
  • Interface and Implementation
  • Layers of Abstraction
  • Points of Failure
  • Exceptions and Exception Handlers

Assigned: Medical Devices

3/7, 3/9

At this point, we've spent a great deal of time learning to express computation. In this unit, we will learn one of the most important and heavily utilized ways to express data: web-oriented HTML.

Topics

  • Core Principles of the Web
  • HTML
  • CSS
  • The Content-Style Divide

Assigned: Personal Web Presence

3/14, 3/16, 3/21

We will explore some of the math that informs what computers can do, and discuss the limitations in computer science.

Topics

  • Decidability and Undecidability
  • Feasibility and Infeasibility
  • P vs. NP
  • Real-world problems with theoretical components.

Assigned: Computation Theory Group Presentations

3/23, 3/28

We will learn about some of the Core principles behind the internet, and develop a deeper understanding of the web.

Topics

  • The OSI model of networking
  • Internet infrastructure
  • Ports
  • Clients and Servers
  • The HTTP protocol

Assigned: Exploring HTTP

3/30, 4/4

Using our knowledge of computation theory and networking, we will study information security. We will go over some of the ways information is leaked, ways that information can be safeguarded, and some strategies for personal protection.

Topics

  • Encryption (symmetrical and assymmetrical)
  • Hashing
  • Privileges
  • Code Injection and Execution
  • Snooping, scanning, and spying

Assigned: Simple Encryption

The information presented in this unit can be dangerous to apply, and is meant as an overview of risks to data. Use of the information in this unit to attack a third party is typically illegal, under the Computer Fraud and Abuse Act.

Every class we have left

Uses of Python for academic, professional, personal, and technical goals.

Topics

  • Web Scraping
  • Regular Expressions
  • Charting and Graphing
  • Simulations
  • Statistics
  • Interoperability with other programs
  • And more...

Assigned: Scraping

Course Policies

Attendance

Because of the fast-paced nature of this course, attendance and active participation are vital to your learning. In the event that you need to miss class, please let me know via e-mail as early as possible so that suitable arrangements can be made.

Deadlines

Projects are due a week after they are assigned, except when otherwise noted on the project page. Projects are due at 11:59 PM on their due date, with a ten minute grace period due to technical issues with submission.

Collaboration

I expect students to work together on the programming assignments in this course. However, there are some restrictions that I feel are reasonable on inter-student collaboration. Students should never look at other students' programs, or allow other students to see their own. When students collaborate, I prefer that they do so by constructing examples together, and then applying those examples to the problem individually.

For example, imagine an assignment that asks for a program that outputs every even number between 1 and 10000. A solution for this problem looks like this:

                    for i in range(10001):
                        if (i % 2) == 0:
                            print i
                    

Sharing this code or writing it collaboratively would be a violation of the collaboration policy, but students collaborating on a similar program, for instance one that prints every number from 1 to 10000, is fine. Any code written collaboratively should be submitted with the assignment.

Grading

While this course is Pass-Fail, performance on assignments will be assessed using a range-oriented grading scheme. The five possible grades are, in order from most desirable to least desirable, Excellent, Very Good, Good, Fair, and Poor,

An additional grade, No Credit, indicates that the assignment was not completed or was ungradeable.

In general, assignments will be assessed on several factors. A write-up, for instance, will receive a separate grade from a coding question even if both appear in the same assignment. Regarding coding questions specifically, work will be assessed both for functional correctness and readability.

Grade Breakdown

Contact and Administration

Instructor: Arthur Berman

Office Hours: Before and after class meetings, and by appointment. More hours will be added as needed.

For support, questions, and answers, please use Piazza