General Information
Instructor:
Geoffrey Towell259 Park Science Building
526-5064
gtowell at brynmawr dot edu
http://cs.brynmawr.edu/~gtowell
Class:
Lecture Hours | Tuesday / Thursday 9:55-11:15 |
---|---|
Room | Park 336 |
Lab | Thursday 11:25 -- 12:45 |
Room | Park 231 |
Office Hours | Monday 10AM - Noon. Tuesday 1pm-2pm Also by appointment. |
Zoom | Meeting code: 232 840 6920. Password: given in class |
Course Description |
An introduction to the fundamental data structures of computer science: lists, stacks, queues, trees, Binary
Search Trees, graphs, sets and their accompanying algorithms. Principles of algorithmic analysis and object
reasoning and design will be introduced using mathematical techniques for the notions of both complexity and
correctness.
In addition, there will be a significant discussion of Object-Oriented programming and the implementation of object-oriented programming in Java. |
Computer Lab | Park 231 Instructions for using the lab computers Remote accessible lab computer status |
Text
Important Dates
- August 30, first lecture
- Oct 4, first midterm Date changed on Sep 16
- Answers for midterm 1
- Nov 3, second midterm
- Practice test
- Exam period, Final Exam
TA Hours
Most weeks, TAs are available at the following times in Park 231TAs hours have started (as of Aug 30)
Sunday | 6pm-10pm |
---|---|
Monday | 6pm-10pm |
Tuesday | 6pm-10pm |
Wednesday | 6pm-10pm |
Thursday | 6pm-10pm |
Friday | NO TA hours |
Saturday | NO TA Hours |
Assignments
There will 9-10 weekly homework assignments. Homework will be electronically submitted. All work must be turned in by the due date or it will not be considered. There are two exceptions to this rule:- 2 (two) 24 hour late passes. These are to be used at your discretion during the semester. To use a late pass you merely have to send me an email saying that you intend to use a late pass. You do not need permission, this is merely to inform me that you are using a late pass. This email MUST be sent prior to the due date. (I have received email with time stamps less than one minute before the due date.) I repeat, approval is automatic. You may use both late passes on a single assignment. These late passes are intended to give you a little scheduling flexibility.
- For major issues (requiring more than 24 hours), talk to me. For such issues, you must talk to be more than 48 hours prior to the due date.
Homework assignments are intended to take under 10 hours to complete. That said, some people will require far more that that on some assignments. I strongly encourage everyone to start early. Work some on the assignment. Then go get something to eat, take a nap, etc. Often with programming, getting away from the problem for a while is important.
Despite my best efforts, homeworks may have sections that are not quite correct. If you find an error, let me know. If I agree that the issue is an issue and you have told me of the issue at least 48 hours prior to the due date then I will give bonus points as follows:
3 points for the first issue reported 2 points for the second issue reported 1 point for the third issue reportedOrdering is based on date of email receipt. One bonus per person per assignment.
All assignments must abide by the following standards
- 151 Design Principles
- 151 Code Formatting Standards
- Google's style guide This is consistent with my documents, but much longer.
All assignments must be accompanied by a README file. I will read, and often will respond, to all README text. See the file for a description of the expected contents.
- Homework 1
- Due Wednesday Sep 7, before 11:59:59 pm
- Homework 2
- Wednesday Sep 14, prior to 11:59:59 pm
- Homework 3
- Due Wednesday Sep 21, prior to 11:59:59 pm
- Homework 4
- Wednesday Sep 28, prior to 11:59:59 pm
- Homework 5
- Due
THURSDAY October 20Friday October 21, prior to 11:59:59 pm - Homework 6
- Due
WEDNESDAY October 26, Thursday October 27 prior to 11:59:59 pm - Homework 7
- Part 1 due Wednesday Nov 2 prior to 8am; Part 2 due Wednesday Nov 9 prior to 11:59:59 pm
- Homework 8
- Due Wednesday Nov 16, prior to 11:59:59 pm
- Homework 9
- Due Thursday Dec 1, prior to 11:59:59 pm
Labs
Labs are best done in the lab session. If I request an email at the end of the lab (this is typical), I must receive that email by 11:59:59 on the day of the lab (unless prior arrangements have been made).- Sep 1 Lab 1
- Sep 8: Lab 2
- Sep 15: Lab 3
- Sep 22: Lab 4 Command Line Arguments in Java
- Sep 29 Practice ExamThis is the first exam from Spring 2022. The majority of lab will be working on this exam with myself and the TA present. Practice Exam Answers
- Oct 20: Lab 6 Breakpoints and stacks
- Oct 27: Lab 7 Recursion!!
- Nov 10: Lab 8 Merging for Merge Sort
- Nov 17: Lab 9
- Dec 1: Lab 10 -- the last lab!!
Lectures
I intend to post lecture notes here before every class. If you do not see them it is a mistake on my part. Tell me before class starts.
- Aug 30 -- Introduction
- Sep 1 -- Java Inheritance
- Sep 6 -- Bags, Thinking Abstractly
- Lecture Notes
- Some of the code for this lectures uses the Pet classes from last week
- Bag of Pets Interface
- Implementation of interface
- Generic bag interface
- Implement BagOfStuff
- Shelter using StuffBag Considerably revised from Shelter of last week.
- Key value pairs
- Sep 8 -- Exceptions, Complexity Analysis
- Lecture Notes
- Bad Exception handlingSo bad it does not compile
- Still Bad Exception HandlingBut it compiles
- Good Exception Handling
- Timing a task
- ReadCSV Exception thrown from constructor
- Sep 13 -- Complexity Analysis, Lists
- Sep 15 -- Lists, Inner Classes, Maps
- Sep 20 -- Maps, starting Hashtables
- Sep 22 -- Hashtables
- Sep 27 -- Hashtables
- Sep 29 -- Hashtables, Review
- Oct 6 -- The Comparable interface, Stacks
- October 18 -- Queues and Priority Queues
- October 20 -- Introduction to Recursion
- Lecture Notes
- Add One
- Factorial
- Fibonacci
- Recursion and arrays
- Counting the number of occurrences of a letter (six!! ways) Some of them actually work!
- Oct 25 -- More Recursion -- Binary Search
- Oct 27 -- Recursion and Backtracking
- Nov 1 - Abstract classes, Review
- Nov 8 -- Priority Queues and Sorting
- Nov 10 -- Sorting
- Nov 15 -- Linked Lists
- Nov 17 -- Linked Lists2
- Nov 22 -- Trees
- Nov 28 -- Trees -- part 2
- Dec 1 -- Trees -- part 3 and tree balancing
- Dec 6 -- Trees -- part 4 Equality
- Dec 8 -- The End
- Lecture Notes
- Instructions for Final Exam
- An old final with Answers Note that the contents of the course were slightly different so some of the topics tested were not discussed.
Course Policies
Communication
Attendance and active participation are
expected in every class. Participation includes asking questions,
contributing answers, proposing ideas, and providing constructive
comments.
Please
stay in touch with me, particularly if you feel stuck on a topic
or assignment and can't figure out how to proceed. Often a quick
e-mail, or face-to-face conference can reveal solutions
to problems and generate renewed creative and scholarly energy. It
is essential that you begin assignments early.
Grading
Grades will be awarded based on the number of points earned and according to the percentage breakdowns shown.Homework | 45% |
Lab | 5% |
Midterms (2) | 32% |
Final exam | 18% |
Mid-terms will be in class (or possibly take-home). If take-home then the time to complete will be 80 minutes (1 class period). All exams, whether in-class or not, will be open everything. The only restriction is that you may not discuss the exam, in any way, with anyone until 24 hours after the exam (unless you are told otherwise).
Incomplete grades will be given only for verifiable medical
illness or other such dire circumstances. Incomplete grades must be approved through the Dean's office.
ALL work submitted for grading should be entirely YOUR OWN (except for labs). Sharing of programs, code snippets, etc. is not permitted under ANY circumstances. That said, I encourage you to discuss assignments at an algorithmic level with other students. That is, talk about the problem, and general approaches to problems. Do not share or discuss actual Java code. There are two exceptions to this policy. First, you may freely show and discuss your code with TAs. Second, you may discuss very specific bugs with your classmates. When debugging DO NOT simply copy code in the "well my code works for this issue ..".
Links
- Kernighan's book on programming style. Most of the examples in this book are in languages rarely if ever used, but the lessons still apply.
Learning Accommodations
Students requesting accommodations in this course because of the impact of disability are encouraged to meet with me privately early in the semester with a verification letter. Students not yet approved to receive accommodations should also contact Deb Alder, Coordinator of Accessibility Services, at 610-526-7351 in Guild Hall, as soon as possible, to verify their eligibility for reasonable accommodations. Early contact will help avoid unnecessary inconvenience and delays.This class may be recorded.
Creating a Welcoming Environment
All members of the Instruction Staff are dedicated to the cause of improving diversity, equity, and inclusion in the field of computing, and to supporting the wellness and mental health of our students.Diversity and Inclusion
It is essential that all members of the course community – the instructor, TAs, and students – work together to create a supportive, inclusive environment that welcomes all students, regardless of their race, ethnicity, gender identity, sexuality, or socioeconomic status. All participants in this course deserve to and should expect to be treated with respect by other members of the community. Class meetings, lab sessions, office hours, and group working time should be spaces where everyone feels welcome and included. In order to foster a welcoming environment, students of this course are expected to: exercise consideration and respect in their speech and actions; attempt collaboration and consideration, including listening to opposing perspectives and authentically and respectfully raising concerns, before conflict; refrain from demeaning, discriminatory, or harassing behavior and speech.Wellness
Additionally, your mental health and wellness are of utmost importance to the course Instruction Staff, if not the College as a whole. All members of the instruction staff will be happy to chat or just to listen if you need someone to talk to, even if it’s not specifically about this course. If you or someone you know is in distress and urgently needs to speak with someone, please do not hesitate to contact BMC Counseling Services: 610-526-7360 (610-526-7778 nights and weekends). If you are uncomfortable reaching out to Counseling Services, any member of the Instruction Staff will be happy to contact them on your behalf. We understand that student life can be extremely difficult, both mentally and emotionally. If you are living with mental health issues such as anxiety, depression, ADHD, or other conditions that may affect you this semester, you are encouraged to discuss these with the Instructor. Although the details are up to you to disclose, the Instruction Staff will do their best to support and accommodate you in order to ensure that you can succeed this course while staying healthy.Created August 2022. Subject to constant revision.