Computer Science 112

Fundamentals of Programming II


General Information

Professor Ken Lambert
Office Parmly Hall 406
Phone 458-8809
email lambertk@wlu.edu
Home page http://home.wlu.edu/~lambertk/
Lecture M/W/F 2:30-3:25, Science 214

Labs

Thursday 9:05-12:10, Parmly 405

Thursday 2:30-5:30, Parmly 405

Office Hours M/T/W/F 1:00-2:00


Brief Overview

This is a second course in programming and problem solving with Python. Topics include

Classroom work will consist of lecture and discussion. Written work will consist of several programming projects, homework exercises, two hourly exams, and a comprehensive final exam.


Readings

The following textbook is required:

Lambert, Fundamentals of Python: Data Structures (Cengage Learning, 2014, ISBN 978-1-285-75200-6). Fundamentals of Python: Data Structures

 


Grading

The written work for the course will consist of


Attendance

Attendance at labs is required. The only excuses for missing a lab are medical and other serious emergencies. If you miss a lab without an excuse approved by me, you will receive a grade of 0 for that lab. Excuses must be submitted to me before the lab, if possible.

It is very important that you attend lectures. There will be considerable information given in lectures that is not available elsewhere. You should come to lectures and labs prepared to participate in discussion.

Be respectful of your classmates and the instructor. The use of laptops and mobile computing devices are permitted during class so long as they are being used for the course, such as for taking notes and locating information related to the course. These devices are NOT to be used during class for texting, phone calls, reading email, social networking, completing assignments for other courses, or shopping.


Accommodations

Washington and Lee University makes reasonable academic accommodations for qualified students with disabilities. All undergraduate accommodations must be approved through the Office of the Dean of the College. Students requesting accommodations for this course should present an official accommodation letter within the first two weeks of the (fall or winter) term and schedule a meeting outside of class time to discuss accommodations. It is the student's responsibility to present this paperwork in a timely fashion and to follow up about accommodation arrangements. Accommodations for test-taking should be arranged with the instructor at least a week before the date of the test or exam.


Final Exam Policy

The final exam for this course will be given during the final exam week. You can take this exam during any of the regularly scheduled exam periods that week. You must supply an exam envelope to the instructor or the department administrative assistant no later than noon on the last day of class. You must specify a provisional day and time on the envelope, which you are free to change on the clipboard provided outside the door of Parmly 407 any time that week. Email or phone requests to reschedule will not be accepted.

The exam will be given in Parmly 405, and you should arrive promptly before the appointed time. If you are more than 15 minutes late, you will have to reschedule your exam. If you are more than 15 minutes late to the last exam period on Friday afternoon, you will receive a grade of 0 on your exam.

Students who have approved academic accommodations must make arrangements to use those accommodations directly with the instructor no later than the last day of class. Students approved for extra time will receive that time at the tail end of the morning exam period or before the beginning of the afternoon exam period (for example, ending at 1:30 PM for a morning exam or beginning at 12:30 PM for an afternoon exam). Students approved for a low-distraction testing location should reserve that space during the last week of classes (following instructions distributed by Dean Price (sophomores, juniors or seniors) or Director of Disability Resources Lauren Kozak (first-years).


Academic Integrity

The hourly exams and the final exam should be written individually and pledged.

Although you may discuss programming problems among yourselves, your programs should be your own work. You may NOT use the work of your classmates, former students, friends, or anyone else in writing your programs. By "use" I mean turning in the work of others as your own, or even casting your eyes upon the work of others with a view to incorporating their solutions into your own. If you are in doubt about your own practice, please consult me before you turn in your work. Deliberate concealment of sources constitutes plagiarism and will result in a failing grade for the course and a report to the EC. Please familiarize yourself with W&L’s policy on plagiarism at http://library.wlu.edu/research/ref/cite_plag.asp.


Tentative Schedule

Monday Wednesday Thursday Friday
January 9 User interfaces: TUIs, GUIs, and ZUIs GUIs: Handling user events

Lab 1

 

GUIs: Panels and widgets for input and output
January 16

Martin Luther King Day

Model/View/Controller and developing a data model

Lab 2

Overview of collections

Chapter 2

January 23

Searching, sorting, and complexity analysis

Chapter 3

Finding faster algorithms

Chapter 3

Lab 3

Array-based structures

Chapter 4

January 30

Introduction to linked structures

Interfaces and implementations

Chapter 5

Lab 4

Iterators

Chapter 5

February 6

Equality

Chapter 6

Inheritance and abstract classes

Chapter 6

Lab 5

Introduction to stacks

Chapter 7

February 13

Stack applications

Chapter 7

Backtracking algorithms

Lab 6

 

Introduction to queues

Chapter 8

February 27

Array-based Queues

Queue applications

Lab 7

Introduction to lists

Chapter 9

March 6

Linked Lists

List iterators

Lab 8

Introduction to trees

Chapter 10

March 13

Binary search trees

Recursive descent parsing

 

Lab 9 Science, Society, and the Arts
March 20

Expression trees

Reading day

Lab 10

Heaps

 

March 27

O(n) sorting with bucket sort

Chapter 11

Hashing implementation of unordered collections Lab 11

Introduction to graphs

Chapter 12

April 3

Graph algorithms

 

A graph implementation Lab 12

Conclusion


Presentations

1 User Interfaces: TUIs, GUIs, and ZUIs

2 Command Buttons and Handling User Events

3 Panels, Data Fields, and Error Handling

4 M/V/C and Data Model Design

5 Overview of Collections

6 Searching, Sorting, and Complexity Analysis

7 Finding Faster Algorithms

8 Working With Arrays

9 Introduction to Linked Structures

10 Interfaces and Implementations

11 Iterators

12 Equality

13 Inheritance and Abstract Classes

14 Introduction to Stacks

15 Stack Applications: Evaluating Postfix Expressions and Converting Infix to Postfix

16 Stack Applications: Backtracking

17 Introduction to Queues

18 Equality and Multiple Inheritance

19 Array-Based Queues

20 Queue Applications: Modeling and Simulation

21 Introduction to Lists

22 Linked Lists

23 List Iterators

24 Introduction to Trees

25 Binary Search Trees

26 Recursive Language Processing

27 Expression Trees

28 Heaps

29 O(n) Sorting with Bucket Sort

30 Using Hashing to Implement Unordered Collections

31 Introduction to Graphs

32 Graph Algorithms

33 A Graph Implementation in Python

34 Summer Reading

Links

Review Questions for Final Exam

Sakai website (Programming project handouts, hourly exams, videos of lectures, etc.)

Textbook website (Download all example programs in the book, view errata in the first printing, etc.)

The breezypythongui website

Python 2 vs Python 3

PageTutor's ColorPicker 3.1