Code, Software, and Computation is a course taught through the Experimental College at Tufts University.
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
Assigned: Getting Started.
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.
Assigned: Your First Programs
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.
Assigned: Word Frequency
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.
Assigned: Code Talking
Using the skills we've developed during the first four units, we will shift our focus to constructing entire programs.
Assigned: Medical Devices
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.
Assigned: Personal Web Presence
We will explore some of the math that informs what computers can do, and discuss the limitations in computer science.
Assigned: Computation Theory Group Presentations
We will learn about some of the Core principles behind the internet, and develop a deeper understanding of the web.
Assigned: Exploring HTTP
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.
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.
Uses of Python for academic, professional, personal, and technical goals.
Assigned: Scraping
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.
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.
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.
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.
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