## In-class Code

When we write code together in class, it will be posted here!

## Homework and quizzes

There will often be short homework assignments to be completed over the weekend, assigned on Friday and due Wednesday, sometimes with a corresponding quiz at the beginning of class on Wednesday.

These quizzes and homework assignments together will comprise 15% of your final grade.

# Name Due
0 Info sheet F Jan 18
1 Minecraft W Jan 23
2 Tracing practice W Jan 30
3 Conditional practice M Feb 4
4 Function and loop reading W Feb 20
5 DNA Strings M Feb 25
7 For loop reading W Apr 3
Quiz Date
Python math and output Monday 1/28
Execution tracing Wednesday 1/30

## Labs

# Name Assigned Due
1 Minecraft Hour of Code Jan 16/17 Jan 23/24
2 Kepler and Newton Jan 23/24 Jan 30/31
3 Diagnosing Heart Disease Jan 30/31 Feb 6/7
4 This Day in History Feb 6/7 Feb 13/14
5 Guess My Number Feb 13/14 Feb 20/21
6 Mutation is the Word Feb 20/21 Feb 27/28
7 Todo Manager Feb 27/28 Mar 6/7
8 TBA Mar 13/14 Mar 27/28
9 Caesar’s Secrets Mar 27/28 Apr 3/4
10 Sentiment Analysis Apr 3/4 Apr 10/11
11 Water Jugs Apr 10/11 Apr 17/18
12 On Stuckness and debugging Apr 17/18 Apr 24/25
13 Civic Data Hacking Apr 24/25 Apr 29

Much of your experience with programming in this course will be through weekly labs, which will comprise 25% of your final grade. Each lab will be assigned Wednesday/Thursday in lab with time allotted to work through the materials, and will be due by the start of the following lab. All labs are weighted equally within the lab portion of your final grade.

On these labs, you may work with a partner on the lab assignments if you choose. Their name must be listed on any code you hand in as joint work. A partnership should only turn in a single copy of the assignment. If students working as partners wish to turn in a lab late, both students must use a late day.

Lab attendance is required. Labs take place in the Snoddy Computer Lab, in the Bailey Library. As you go through the exterior door of the library, turn immediately to your left and enter the Snoddy Academic Resource Center, through this door:

Continue through the door at the far end of the hall (just visible in the picture above) into the first computer lab, and then enter the second lab at the back.

Labs should follow the Python style guide. You may use the automated style checker to help you catch common style errors.

## Projects

You will have three projects in this course, one about every five weeks, for a total of 35% of your final grade. These projects will cover concepts we have discussed in class and in labs, and will be due approximately one week after they are assigned.

You must work individually on the first two projects. You may discuss concepts and ideas with your classmates, but the code you turn in must be your own. You will be graded not only on correctness, but also technique, documentation and evaluation of your solution. Further details on the grading standards and handin instructions for each project will be given when they are assigned.

Project Name Pct Assigned Due
1 Question-Answer 5% Feb 4 Feb 18
2 Word Games 10% Mar 8 Mar 29
3 Final Project 20% Apr 15 May 6

## Exams

There will be three in-class exams, the first worth 5% and the last two each worth 10% of your final grade. They will consist of short answer questions along with writing and debugging code.

• Exam 1: Friday, February 8, covering input/output, math, numerical data, conditionals, and binary encoding
(Practice exam)

• Exam 2: Wednesday, March 6, covering functions, while loops, lists, and strings
(Practice exam

Exam Bonus Assignment (due in class the Friday after spring break, March 29)

There is no final exam; you will complete a final project instead, as described above under Projects.

## Syllabus

### Learning Goals

Introduction to solving computational problems, including the fundamentals of computer programming. Topics include imperative programming constructs (variables, loops, conditionals, functions, recursion), basic object-oriented constructs (classes, objects), and some fundamental algorithms and data structures (dictionaries, arrays, linked lists). Student learn these concepts through studying the Python programming language.

At the end of the course, you will be able to:

• Read, understand and execute a computer program written in Python.
• Read a set of requirements for a computer program in English, and write a short Python program (100 lines or less) that corresponds to them.
• Test a Python program and identify and fix programming errors.
• Identify some errors in a Python program without testing it.
• Without using a computer, write a very short Python code fragment (10 lines or less) that correctly implements a set of requirements.
• Understand and apply variables, loops, strings, lists, conditionals, and functions.
• Write programs to perform mathematical calculations.
• Understand the concepts of class and object, and distinguish between them.
• Write a Python program including objects of multiple interacting student-designed classes.
• Write and understand appropriate comments in a Python program.
• Understand the concept of an algorithm and compare the efficiency of different algorithms for a simple task.

### Disabilities

It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Students should contact Julie Brown in the Office of Academic Success (505.2954; brownj@hendrix.edu) to begin the accommodation process. Any student seeking accommodation in relation to a recognized disability should inform the instructor at the beginning of the course.

All Hendrix students must abide by the College’s Academic Integrity Policy as well as the College’s Computer Policy, both of which are outlined in the Student Handbook.

For specific ways the Academic Integrity policy applies in this course, please refer to the Computer Science Academic Integrity Policy.

The short version is that academic integrity violations such as copying code from another student or the Internet are easy to detect and will be taken very seriously.