WSU logo School of Electrical Engineering and Computer Science,
		Washington State University

CptS 111: Introduction to Algorithmic Problem Solving

It has often been said that a person does not really understand something until after teaching it to someone else. Actually a person does not really understand something until after teaching it to a computer, i.e., expressing it as an algorithm.

Donald E. Knuth, American Scientist:61(6), 1973

Instructor & TA
Time and Place
Description
Textbooks
Software
Lab Assignments
Homework
Lecture Notes/
    Schedule

Tests
Quizzes
Grading
Miscellaneous

Instructor and Teaching Assistant

Instructor: John B. Schneider
Office: EME 221
Phone: 509 335 4655
email: schneidj@eecs.wsu.edu
Office hours: Monday and Wednesday 11:10–12:00
TAs: Dario Alvarez (labs)
email: dalvarez@eecs.wsu.edu
Office hours: by appointment
  Andrew Lytle (grader)
email: andrew.lytle@email.wsu.edu

Meeting Time and Place

Lectures: M, W 10:10–11:00, Sloan 150

Labs: (NOTE: You must bring your own laptop to labs.)

  • Sec. 01: Friday 8:10-11:00, EME 52
  • Sec. 02: Friday 11:10-14:00, EME 52

Course Description

Catalog Description: Elementary algorithmic problem solving, computational models, sequential, iterative and conditional operations, parameterized procedures, array and list structures and basic efficiency analysis.

This course uses the Python programming language. Although you may have some previous programming experience, it is assumed you have none. New constructs are introduced in nearly every lecture so for you to succeed it is vitally important to come to each lecture ready to learn. Additionally, to succeed you must keep up with the reading assignments, homework assignments, and labs. This can be a fun and rewarding class, but it has its share of challenges. You must be willing and able to work hard!

Course rules and additional information.

Textbooks and Reference Material

Course notes will be provided as electronic documents via this Web site. These notes will provide all the material necessary to complete the course. For those interested in further exploring Python, programming, and algorithm design, you may wish to consider the following supplemental material.
  • There is a wealth of reference material available at the documentation page at python.org, but it can be difficult to find precisely what you are you looking for. This index may help you find what you are seeking.
  • Python for Software Design: How to Think Like a Computer Scientist, Allen B. Downey, Cambridge University Press, 2009. (A short, gentle, and generally very good introduction to Python and programming.)
  • Python Programming: An Introduction to Computer Science, 2 ed., John M. Zelle, Franklin Beedle & Associates, 2010. (The textbook that has been used in this course in the past. It has many good points.)
  • Programming in Python 3: A Complete Introduction to the Python Language, 2 ed., Mark Summerfield, Addison Wesley, 2010. (A thorough and somewhat advanced "introduction" to the Python.)
  • Python: Essential Reference, 4 ed., David M. Beazley, Addison Wesley, 2009. (A rigorous and rather advanced Python reference.)

Software

If you intend to pursue one of the majors in the School of Electrical Engineering and Computer Science, you will be required to have your own laptop. Although you do not necessarily need to have your own laptop for this course, it is highly recommended that you do have one. For labs, it is assumed you will bring your own laptop. (For those lacking a laptop, there are four desktop machines provided. It is best not to count of having these machines available.)

We will use Python 3.x in this course. This is open-source software that is available for free at the download page of the Python Web site python.org/download. There are versions available for Windows, Mac, and Linux. Please install the appropriate version for your system (you should install the version 3.2.2 which is the current version as of this writing). Note that some machines come with Python pre-installed. However, that pre-installed version is often version 2.x which is not completely compatible with version 3.x. It is important that you have version 3.

Lab Assignments

Number, Title, & Link Date Solution
Lab 1
Python, IDLE, Submitting HW
1/13/2012  
Lab 2
Some Python Basics
1/20/2012 lab2_t2.py, lab2_t3.py, lab2_t4.py, lab2_t4a.py (alternate solution).
Lab 3
The Root of All eval()
1/27/2012 lab3_t1.py, lab3_t2.py, lab3_t3.py, lab3_t4.py
Lab 4
Lists, Loops, and Some Stats
2/3/2012 lab4_t2.py, lab4_t3.py, lab4_t4.py, lab4_t5.py, lab4_t6.py
Lab 5
Loops, Optional Parameters, and Accumulators
2/10/2012 lab5_t3.py, lab5_t5.py, lab5_t5_alt.py,

Homework

Homework Submission Page

Number & Link Due Date Solution
HW 1 1/13/2012
before lab
 
HW 2 1/24/2012 hw2a.py, hw2b.py.
HW 3 1/31/2012 hw3a.py, hw3b.py, hw3c.py.
HW 4 2/10/2012 hw4a.py, hw4b.py.

Lecture Notes/Reading Material/Schedule

Week Date Lecture Material Reading Topics
Week 1 1/9/2012 Chap. 1 Course goals, structure, & rules.
1/11/2012 Lecture 2 Chap. 2 IDLE, interactive interpreter, comments, print(), bugs, help(), literals, statements, expressions, variables, identifiers, assignment, type, arithmetic operators, precedence.
Week 2 1/16/2012
Holiday: Martin Luther King, Jr. Day
1/18/2012 Lecture 3 Chap. 3 Multi-line strings, more on arithmetic operations, simultaneous assignment, divmod() keywords, input(), int().
Week 3 1/23/2012 Lecture 4 Chap. 4 More on type conversion, float(), eval(), functions, return vs. print(), None, program structure, scope.
1/25/2012 Lecture 5 Chap. 5 More on scope and return. Introduction to classes and objects.
Week 4 1/30/2012 Lecture 6 More on objects: methods, attributes, dir(), __init__(), operator overloading.
2/1/2012 Lecture 7 Chap. 6 Lists, iterables, for loops, indexing.
Week 5 2/6/2012 Lecture 8 More on lists, for loops, and indexing.   range().
2/8/2012 Lecture 9 A bit more on lists, tuples, iterables, lvalues, and simultaneous assignment.  Review.
Week 6 2/13/2012
Exam #1
2/15/2012 import statements, math module, time module, random module.
Week 7 2/20/2012
President's Day
2/22/2012 Strings, string methods, slices, string formatting.
Week 8 2/27/2012 Encountering errors: exceptions, traceback, & debugging basics.
2/29/2012
Week 9 3/5/2012
3/7/2012
Week 10 3/19/2012
Exam #2
3/21/2012
Week 11 3/26/2012
3/28/2012
Week 12 4/2/2012
4/4/2012
Week 13 4/9/2012
Exam #3
4/11/2012
Week 14 4/16/2012
4/18/2012
Week 15 4/23/2012
4/25/2012

Note: The final exam is scheduled for Wednesday, May 2nd, from 8:00 to 10:00 a.m.

Tests

  Date Solution/
Feedback
Test 1 2/13/2012 Practice Exam #1,
Practice Exam #2,
Practice Exam #1 Solution,
Practice Exam #2 Solution.
Chaps. 1 to 6 Summary.

Quizzes

  Date Solution
Quiz 1 1/20/2012 Quiz 1 Solution
Quiz 2 1/27/2012 Quiz 2 Solution
Quiz 3 2/3/2012 Quiz 3 Solution
Quiz 4 2/10/2012 Quiz 4 Solution

Grading

Metric Value
Midterm #1 15%
Midterm #2 15%
Midterm #3 15%
Final Exam 20%
Homework 15%
Labs 10%
Quizzes 10%
Attendance
(bonus)
3%

Labs:  Each lab is worth 100 points.  If there are N tasks in a lab that require a student to complete some coding or do some work that needs to be documented with the TA, then each individual task has a value of 100/(N+1) points.  Tasks are of equal weight regardless of difficulty. A student is also awarded 100/(N+1) points for attending the lab.  For example, if there were three "graded" tasks in a lab, each task would be worth 100/(3+1) = 25 points.  Thus, if a student attended this lab but was only able to complete two of the three of the tasks, that student would receive 75 points.  The tasks were conceived to be credit or no credit—either a student completes the tasks or he or she does not.  However, the awarding of partial credit is at the discretion of the TA.  If time runs out before a student has completed a task but the student has made significant progress toward finishing that task, the TA can (at his or her discretion) give partial credit.  The lowest lab score will be dropped.  Reasonable collaboration on the labs is encouraged (copying is not collaborating).

Homework:  Each homework assignment is worth 100 points.  The lowest homework score will be dropped.  Reasonable collaboration on the homework is encouraged (copying is not collaborating).

Quizzes:  Quizzes carry equal weight.  The lowest quiz score will be dropped.  Absolutely no collaboration on the quizzes is allowed. Quizzes will be "open notes" and "open computer."

Tests:  No test scores will be dropped. You must take the test at the scheduled time.  Failure to do so will result in a zero for the test.  No collaboration on the tests is allowed.  Copying the work of others or sharing your work with others will result in immediate failure for the semester and a report being filed with the Office of Student Conduct. Tests will be "open notes" but "closed computer." You will be expected to work on tests for the entire time allotted.

Miscellaneous

Students with Disabilities

Reasonable accommodations are available for students with a documented disability. If you have a disability and may need accommodations to fully participate in this class, please visit the Access Center (Washington Building 217) to schedule an appointment with an Access Advisor. All accommodations MUST be approved through the Access Center.


John Schneider's home page.

Last updated: February 12 2012, 00:21.