CSCI 112: Fundamentals of Programming II

CSCI 112: Fundamentals of Programming II: Data Structures


General Information

Professor: Simon D. Levy


Additional Help: csci_help@wlu.edu

Zoom link for evening teaching assistants

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 can view an online copy 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)

Programming assignments should be submitted to the private repository I have set up for you on github, using a separate folder for each assignment.  Your repository name  is https://github/com/simondlevy/<username>, where <username> is your W&L network user name (for example, jsmith26).  Each assignment is due 11:59 PM on the Monday after lab.

The grading scale for your course grade will be 93-100 A; 90-92 A-; 87-89 B+; 83-86 B; 80-82 B-; 77-79 C+; 73-76 C; 70-72 C-; 67-69 D+; 63-66 D; 60-62 D-; below 60

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.

Policy on use of AI

Please don’t use ChatGPT or other AI tools for completing the assignments in this course.  You are welcome to use standard pro-tip sites like stackoverflow.com; better yet, ask me for help.


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 professor 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. The exam will be distributed electronically for you to complete in no more than three hours. You can return the exam to me via github.

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 are told to 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 Tuesday Wednesday Thursday Friday
2 Sep
Week 0
      Course Intro /
Ungraded Assessment
User interfaces: TUIs, GUIs, and ZUIs
9 Sep
Week 1
User interfaces: TUIs, GUIs, and ZUIs  

GUIs:  –GUIs: Handling user events  / Panels and widgets for input and output

Lab1 List boxes and popup dialogs
16 Sep
Week 2
 Overview of collections
(Chapter 2)
  Searching, sorting, and complexity analysis
(Chapter 3)

big_o.py

Lab 2 Finding faster algorithms
23 Sep
Week 3
Finding faster algorithms   Review for Exam Lab 3 First hourly exam
30 Sep
Week 4

Discuss Exam

 

Array-based structures
(Chapter 4)

Introduction to linked structures

linkedlist.py

Lab 4 Introduction to linked structures
7 Oct
Week 5

Iterators
(Chapter 5)

Equality
(Chapter 6)

 

Stacks (Chapter 7)

Reading Day; No Class Reading Day; No Class
14 Oct
Week 6
Stack applications   Queues (Chapter 8) Lab 5

Binary Search] Trees
(Chapter 10)

21 Oct 
Week 7
Review for exam   Second hourly exam Lab 6 Discuss exam
28 Oct
Week 8
Heaps
(Chapter 10)
  Heaps
(Chapter 10)
Lab 7 Heaps
(Chapter 10)
4 Nov
Week 9
Bucket Sort
(Chapter11)
(tutorial video)
  Implementations of dictionaries
(Chapter 11)

Lab 8

Hashing / Review for third exam

11 Nov
Week 10
Third hourly exam (take-home)
  Discuss exam

Lab 9

mobydick.txt

Introduction to graphs
(Chapter 12)
18 Nov
Week 11
Introduction to graphs
(Chapter 12)
  Graph algorithms Lab 10

Beyond Python: Inheritance, Abstraction, Interface

2  Dec
Week 12
Beyond Python:
A sip of Java
 

Beyond Python:
A taste of Haskell

Datatypes

Typeclasses

Lab 11 Review for final exam