No late work is accepted in this course.
No exceptions.

Course Description

Programming skills are in demand across a wide variety of fields. Students and professionals are reaping increasing benefits from the ability to automate tasks, deconstruct problems logically, and deal with increasingly large datasets. Computer Sciences 301, Introduction to Data Programming, aims to teach these skills to students who do not intend to pursue a major or certificate in computer sciences by offering a friendlier, slower-paced and more application-focused introduction to programming than our already-popular CS 302 course.

Through a combination of classroom instruction and hands-on experience, students with no prior programming experience will learn about program design, implementation, and style.

Intended Learning Outcomes

By the end of the course, students should be able to:

  • Communicate using computer science terminology. Using a common language to talk about concepts helps ease the exchange of ideas.
  • Build large projects in small steps. Creating milestones and breaking large programs down into smaller functions makes complicated projects more achievable.
  • Process data from existing files without manual entry. Dealing with large datasets is more efficient and less error-prone when the process can be automated.
  • Write Python code. We will implement all the concepts and ideas from the course using Python 2.7.

To help students evaluate their own mastery of the learning outcomes, we'll use the following assessments:

  • Exams: three (3) in-class midterms. (50%)
  • Weekly Exercises: each week students will complete a full, short program using concepts from that week's material. Students may work on these on their own time and/or during their (optional) lab time. The last program, due during the final summary period, will be of larger scope and worth three times as much as the other programs. (50%)

I may offer extra credit - stay tuned for how you can earn some extra points AND help yourself to learn more about programming.

Appropriate Academic Conduct Policy

In CS 301, students are allowed to work on assignments in pairs if they choose. Students may only share code with their pair programming partner, who must be credited by name on the submitted assignment.

It helps to approach writing a program as you would approach writing a paper rather than solving a math problem. You may absolutely:

  • discuss concepts and ideas with as many people as you like
  • find small pieces of writing on the internet, as long as you cite your quotations
  • write multiple drafts of your code, as long as you share only with your partner

Basically: if it would be considered cheating on your history paper, it's cheating here. It's also really easy to detect.

If you'd like a more formal statement of the policy, you may find it here.

Academic misconduct may result in a variety of disciplinary actions, including but not limited to zeros on assignments, letters filed with the Dean of Students, and failure of the course.


Students are not required to have a personal computer and may use the CS lab computers. However, students are allowed to work on their personal machines if they do have them, and may find it useful to bring a laptop or other Python-capable device to class to program along with the in-class demonstrations.

Our textbook will be ... unique. (See the sidebar link for further details.) We will also be heavily referencing the online Python documentation.