Course Structure - Fall 2016

Computer Science 010: Design and Implementation of Solutions to Computational Problems

"No prior computer or programming experience required. Basics of programming including language features, disciplined programming style, and documentation. Problem solving, algorithm design, and the software development process. Discussion of ethical issues arising from the creation and use of computer programs" (catalog p76)

Professor Don Patterson
Lecture: M W F: 12:45pm - 1:50pm
Classroom: Building "CL" Room "T"
Discussion Section: N/A
Telephone: 7028 (on campus) 805-565-7028 (off campus)
Office Hours:
  • Mondays 2:00pm to 3:00pm
  • Wednesdays 2:00pm to 5:20pm
  • Fridays 2:00pm to 3:00pm

There are 224 available times, shared across all my classes and my advisees. Drop-in or reserve a 20 minutes appointment here (my email user name is "dpatterson")

Teaching Assistant: N/A
Email: N/A
Office Hours: N/A

The following book(s) are required for this class.
Python for Everyone by Horstmann and Necaise

Class Attendance / Participation (3 dropped) ~15%
Homeworks ~15%
Programming Assignments ~35%
Exam #1 ~10%
Exam #2 ~10%
Exam #3 ~15%

As the class progresses I may find it necessary to alter the percentages.

This class is a lot of work. You will have to develop computer programs. You will have to read a lot.

Here are some things you will be learning:

  • The Python language
  • How to use scientific computing libraries
  • How to scrape a web page

I prefer to give many small assignments which build up a picture of overall student learning success and not just rely on large exams which students may bomb based on non-learning related complications. Nonetheless, exams are very motivating.

At the end of the day, learning requires the active initiative of the student. I consider myself someone who points students in the right direction and can/will explain the fundamentals of a subject matter. I can't actually do the work of learning for a student. That takes effort and self-motivation. I will help to provide structure and incentives for that learning, but you also need to learn how to expand on this subject yourself. In a technical field like this, you will be left behind the field in about six months, regardless of how well I present the subject matter, if you can't keep learning on your own.

I like to stop talking periodically and let students ask questions.

Class attendance will be determined by completing index cards. The index cards are also a means for me to get feedback about the course.

For each class please write your name on a card, the date, your student ID and a comment about the course.

If you would like to submit an anonymous comment, take an extra card and don't put your name on it.

Collecting feedback this way is a useful and different source of input than other media. It helps me track how the class is understanding the material. Something about paper causes students to say different things than they do on a website.

3 Participation points will automatically be dropped. This is to accomodate sicknesses without a doctor's note, car problems, family issues, strategic time allocation etc.

Each week will have a homework assignment associated with it. It will be an online multiple-choice exam which will generally be due every Thursday evening.

The homeworks are individual assignments and are drawn from the textbook and lecture.

They are designed to support self-study. They will be implemented in such a way that you can return to correct items that you get wrong.

You should approach each homework as a chance to study, and evaluate your understanding of the material. The exam questions will be drawn from the homework questions.

Each week will also have a programming assignment associated with it. The deliverable for the assignment will be source code. The programming assignment will also generally be due every Monday afternoon.

The programming assignments may be done in pairs or individually. You should acknowledge who you worked with for each assignment in comments in your source code.

The goal of the programming assignments is to give you a chance to familiarize yourself with the Python language and basic software tasks. Rather than producing extensive deliverables the focus is on learning to teach yourself from on-line resources. This will hopefully form the basis of being able to create more extensive projects in the future.

This class will have no quizzes.

This class will have 3 in class exams. They will be multiple-choice and paper programming exams that should take up the majority of a class period.

The third exam will be held during the final exam slot.

Each exam is cumulative over the previous work although more heavily weighted toward the newest material.

The exam questions will be drawn from the homework assignments.

The exams will be closed book.

I strive to pick the best-of-class tools to use to administer this class and with which to teach. That requires using multiple websites. They are carefully chosen. Unfortunately, like most of the rest of online activities they are also highly fragmented (not one super-tool). We utilize several online tools in this class. Please familiarize yourself with their use and location. I expect you to check in and use all of them:

This semester our tools will consist of the following:

  1. This web page: in particular the calendar part, is the authoritative location for communicating assignments, materials from the class and due dates.
  2. Eureka for the gradebook 010 on Eureka
  3. Eureka for the news and discussion forum 010 on Eureka
  4. Email

Another way in which technology is changing is the way it is used during lecture time.

On the one hand my students are almost always adults. You should be able to choose to use electronics in class if you want. On the other hand there is a world of sophisticated software, marketing and designs that are doing everything they can to get your attention. They are so good at what they do that you don't have control over your own cognition. One thing that is clear - if you have your laptop open, if you are texting, tweeting, pinteresting, doing email, surfing the web, playing candy crush etc, you are not learning as much as people who put away their electronics and focus fully on the class. The truth is you are lousy at multi-tasking and it's hurting your grades because it's preventing you from thinking deeply about anything. Putting away the devices requires discipline that some of you need to learn, but won't unless you are forced.

There's an additional problem though. It turns out that if the person next to you is using a laptop, it hurts your GPA also. Using your laptop is like second-hand smoke. It's not just you hurting yourself, it's you hurting other people as well.

Clay Shirky has written a long article about these problems that is worth considering as we start off a new semester

If you struggle to pay attention when people around you are working on their computer, understand that the struggle is real and you should sit in the front.

Periodically at the beginning of class I will take the opportunity to address issues of Christian faith and it's relationship to our course material, current events or personal reflections. This may include times of prayer, listening to music or speech, or directed discussion.

These moments are typically not planned far in advance or recorded, but are noted post-facto on the class calendar.

We have many goals for students taking courses in the Computer Science Program. Some of them are specific to particular courses, but almost all are examples of our Program Learning Outcomes (PLOs).

This are the overarching Computer Science Program Learning Objectives

  1. Programming Students will know how to write high quality computer code.
  2. Analysis Students will be able to create and analyze algorithms using formal methods.
  3. Context Students will be able to do the above in the context of real-world problems requiring creativity and adapativity in the face of ambiguity and poorly formed problems
  4. Christian Connection Students will be able to reason in community/conversation about social impacts of computational artifacts on individuals and society in the context of general and specific Christian revelation. (Requires communication, analysis, background knowledge)

Some of the things that you will learn map to the above learning objectives as follows:

  • The nuts and bolts of the Python language - PL01
  • Learning how to read programming specifications - PL02
  • Figuring out how to think computationally - PL01, PL03
  • Understanding the ethical implications of what we are creating - PL04