General Information
Professor | Ken Lambert | |
Office | Parmly Hall 406 | |
Phone | 458-8809 | |
lambertk@wlu.edu | ||
Home page | https://lambertk.academic.wlu.edu/ | |
Lecture | M/W/F 11:00-12:00, Parmly 307 | |
Labs | Thursday 8:30-11:30, Parmly 405 (Section 01)
Thursday 1:30-4:30, Parmly 405 (Section 02) |
|
Office Hours | M/T/W/F 9:00-10:00 |
Brief Overview
This is a second course in programming and problem solving with Python. Topics include
- the design and implementation of data structures and abstract data types
- an introduction to object-oriented design
- a survey of collections, including their formal properties, implementations, and applications
- an introduction to complexity analysis for assessing the space/time tradeoffs of various algorithms and data structures
- a survey of searching and sorting algorithms
- a detailed study of arrays and linked structures
Classroom work will consist of lecture and discussion. Written work will consist of several programming projects, homework exercises, three 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).
Hard copies are available at the University Store. You may view an online copy at Safari Books with your W&L credentials. |
Grading
The written work for the course will consist of
- Programming projects (50% of the grade)
- Three hourly exams (30% of the grade)
- A final exam(20% of the grade)
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, unless otherwise specified (as when you do pair programming). You MAY use code from the PowerPoint slides or from the textbook for the course. Otherwise, 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. Deliberate concealment of sources constitutes plagiarism and will result in a failing grade for the course and a report to the EC. Deliberately providing solutions to other students, either verbally or in writing, via hardcopy or electronic transmission, will result in a failing grade for the course and a report to the EC. In particular, you may not share your work until the deadline to hand in material has passed. Please familiarize yourself with W&L’s policy on plagiarism.
Tentative Schedule
Monday | Wednesday | Thursday | Friday | |
January 8 | User interfaces: TUIs, GUIs, and ZUIs | GUIs: Handling user events | Lab 1
|
GUIs: Panels and widgets for input and output |
January 15 | No class: Martin Luther King Day | List boxes and popup dialogs | Lab 2 | Overview of collections
Chapter 2 |
January 22 | Searching, sorting, and complexity analysis
Chapter 3 |
Finding faster algorithms
Chapter 3 |
Lab 3 | Array-based structures
Chapter 4 |
January 29 | Introduction to linked structures | Interfaces and implementations
Chapter 5 |
Lab 4 | Iterators
Chapter 5 |
February 5 | Equality
Chapter 6 |
Inheritance and abstract classes
Chapter 6 |
Lab 5 | Introduction to stacks
Chapter 7 |
February 12 | Stack applications
Chapter 7 |
Backtracking algorithms | Lab 6
|
Introduction to queues
Chapter 8 |
February 26 | Array-based Queues | Queue applications | Lab 7 | Introduction to lists
Chapter 9 |
March 5 | Linked Lists | List iterators | Lab 8 | Introduction to trees
Chapter 10 |
March 12 | Binary search trees | Tree manipulations
|
Lab 9 | Recursive descent parsing |
March 19 | Expression trees | Heaps | Lab 10 | O(n) sorting with bucket sort
Chapter 11
|
March 26 | Implementations of dictionaries
Chapter 11 |
Hashing implementation of unordered collections | Lab 11 | Introduction to graphs
Chapter 12 |
April 2 | 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 List Boxes and Popup Dialogs
6 Searching, Sorting, and Complexity Analysis
9 Introduction to Linked Structures
10 Interfaces and Implementations
13 Inheritance and Abstract Classes
15 Stack Applications: Evaluating Postfix Expressions and Converting Infix to Postfix
16 Stack Applications: Backtracking
18 Equality and Multiple Inheritance
20 Queue Applications: Modeling and Simulation
26 Recursive Language Processing
29 O(n) Sorting with Bucket Sort
30 Implementations of Dictionaries
31 Using Hashing to Implement Fast Unordered Collections
34 A Graph Implementation in Python
Links
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.)