Bryn Mawr College
CMSC 206: Data Structures
Fall 2014
Course Materials
Prof. Deepak Kumar
|
Texts | Important Dates | Assignments | Lectures | Course Policies | Links |
Instructors:
Deepak Kumar 246-B Park Science Building 526-7485 dkumar at brynmawr dot edu http://cs.brynmawr.edu/~dkumar |
Lecture Hours: Tuesdays & Thursdays, 9:55a to 11:15a
Room: TBA
Lab: Wednesdays 10:00 a to Noon in Room 231 (additional lab
hours will also available, see below)
Laboratories:
Lab Assistants: The following Lab assistants will be available during the week (names and schedules will be posted by the end of this week) for assistance on lab assignments.
|
|
Course Description (from the Course Catalog): Introduction to the fundamental algorithms and data structures using Java. Topics include: Object-Oriented programming, program design, fundamental data structures and complexity analysis. In particular, searching, sorting, the design and implementation of linked lists, stacks, queues, trees and hash maps and all corresponding complexity analysis. In addition, students will also become familiar with Java’s built-in data structures and how to use them, and acquire competency in using a professional grade IDE.
Here is what we plan to learn this semester:
she++: The Documentary from Ellora Israni on Vimeo.
September 2: First lecture
September 25: Exam 1
October 30: Exam 2
December 11: Last lecture/Exam 3
Assignments
- Assignment#1 (Due on Tuesday, Septmber 9): Click here for details.
- Assignment#2 (Due on Tuesday, September 16): Click here for details.
- Assignment#3 (Due on Tuesday, September 23): Click here for details. Extended: Due on Thursday, September 25.
- Assignment#4 (Due on Thursday, October 9): Click here for details.
- Assignment#5 (Due on Thursday, November 13): Click here for details.
- Assignment#6 (Due on Tuesday, November 25): Click here for details.
Lectures
- Week 1 (September 2, 4)
September 2: Course introduction, adminstrivia. Looking at data, data abstractions, structures, algorithms, etc. Processing/Java review.
Assignment#1 (Due on Tuesday, Septmber 9): Click here for details.
September 4: Today, we will meet in CS Lab (Room 231). Please be sure to arrive on time. Agenda: Quick review of Processing, followed by an introduction to Java & Eclipse.
Read: Appendix A from K&W, Chapter 1 from K&W.
Lab#1 Handout: Click here.
Sample code: The USPS Volume Processing program (without the data). If you'd like, you can get the data from here.
Python Graphics Library: Visit this page if you need information on doing simple graphics in Python.
- Week 2 (September 9, 11)
September 9: Java Basics: program structure, basic input/output, simple dialog-based I/O, Data types and variables, constants, type conversion, reference variables, arrays, statements, methods - class methods and instance methods, error detection and correction: exceptions, try-catch blocks.
Read: Appendix A from Koffman & Wolfgang
September 11: Today, we will meet in CS Lab (Room 231). Please be sure to arrive on time. Agenda: Errors, Exception Handling in Java. File I/O in Java.
Lab#2 Handout: Click here.
- Week 3 (September 16, 18)
September 16: OOP in Java: Interfaces, classes, objects, fields, methods, inheritance, abstract classes, packages.
Assignment#3 (Due on Tuesday, September 23): Click here for details. Extended: Due on Thursday, September 25.
September 18: Lab: A quick introduction to OOP. How to code and develop programs incrementally.
Lab#3 Handout: Click here.
- Week 4 (September 23, 25)
September 23: OOP in Java: Interfaces, classes, objects, fields, methods, inheritance, abstract classes, packages.
September 25: Exam 1 is today.
Assignment#3 Sample solution: Assignment3.java, Place.java
- Week 5 (September 30, October 2)
September 30: Data Structures as collections. Sequential data structures: lists. The java.util.List interface. ArrayList class in java.
Read Chapter 2 (pages 61-71 only) from Koffman & Wolfgang.
Assignment#4 (Due on Thursday, October 9): Click here for details.
October 2: OOP in Java: classes, sub/super-classes (inheritance), interfaces. Sequential data structures: lists. The java.util.List interface. ArrayList class in java.
- Week 6 (October 7, 9)
October 7: Implement Lists using static & dynamic arrays. Also, implementing generic ADTs in Java.
Sample Code: MyListInterface.java, MyList.java [Dynamic array implementation]
Read Chapter 2 (pages 71-80 only) from Koffman & Wolfgang.
October 9: Implementing Lists using Linked Lists (and variants: double-linked lists, circular lists, etc.).
Read: Chapter 2 from Koffman & Wolfgang.
- Week 7 (October 14, 16)
No Classes. Fall Break
- Week 8 (October 21, 23)
October 21: Implementing Lists using Linked Lists (and variants: double-linked lists, circular lists, etc.). Computational Complexity. Big-Oh notation.
Read: Chapter 2 from Koffman & Wolfgang.
October 23: Big-O Complexity and complexity classes. Comparing List implementation w.r.to complexity. LinkedList class in Java Collections. Iterators and how to use them. Introduction to stacks and queues.
Read: Chapter 2 from Kauffman & Wolfgang [Everything except 2.6, 2.8, 2.10, 2.11]
- Week 9 (October 28, 30)
October 28: Stacks & Queues. Definitions from the Java Collections Framework. Basic stack and queue operations. Applications of stacks: evaluating postfix expressions.
Read: Start reading Chapters 3 & 4 from Koffman & Wolfgang
October 30: Exam 2 is today.
- Week 10 (November 4, 6)
November 4: Queues: Applications- Discrete event simulation.
Read: Chapter 4 from Koffman & Wolfgang.
Assignment#5 (Due on Thursday, November 13): Click here for details.
November 6: Recursion. Writing recursive functions.
Read: Chapter 5.
- Week 11 (November 11, 13)
November 11:Hierarchical Data Structures: Trees - terminology, binary trees, expression trees, binary search trees, tree traversals: Preorder, inorder, and postorder traversals.
Read: Chapter 6
November 13: Implementing Binary Trees. Implementing Binary Search Trees. The Comparable interface in Java. Defining your own exceptions.
Read: Chapter 6.
Assignment#6 (Due on Tuesday, November 25): Click here for details.
- Week 12 (November 18, 20)
November 18: Binary Search Trees, contd. Heaps & priority Queues. Sets and Maps in Java Collections Framework.
Read: Chapter 7.
November 20: Hash Tables: An introduction. Hash tables internals: Open Addressing (w/ Linear Probing, Quadratic Probing), Chaining.
Read: Chapter 7.
- Week 13 (November 25, 27)
November 25: Sorting: Selection Sort and Insertion Sort. Analysis fo Sorting algorithms.
November 27: No class. Thanksgiving!
- Week 14 (December 2, 4)
December 2: Sorting: Quick Sort, Heap Sort, Merge Sort. How to sort using Java libraries.
December 4: Today is our last lecture. Review and wrap up.
- Week 15 (December 9, 11)
December 9: No class, Deepak is out of town.
December 11: Exam 3 is today.
Communication
Attendance and active participation are
expected in every class. Participation includes asking questions,
contributing answers, proposing ideas, and providing constructive
comments.
As you will discover, I am a proponent of two-way communication
and I welcome feedback during the semester about the course. I am available to answer questions, listen to concerns, and
talk about any course-related topic (or otherwise!). Come to
office hours! This helps me get to know you. You are welcome to
stop by and chat. There are many more exciting topics to talk
about that I won't have time to cover in-class.
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, phone call 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
There will be 6-8 assignments,
weighted equally in the final grading (see below). Assignments must be
submitted according to the instructions provided in each assignment.
At the end of the semester, final grades will be calculated as a
weighted average of all grades according to the following weights:
Exam 1: 20%
Exam 2: 20%
Exam 3: 20%
Assignments: 40%
Total: 100%
Incomplete grades will be given only for verifiable medical
illness or other such dire circumstances.
Technology in the classroom
The class meetings/lectures will be a place to learn the concepts that are a part of the syllabus. I will, in the course of a lecture, write code on the board, and/or even do some live coding in class. The objective of this is to illustrate to you how to go about applying the concepts in practice. It is NOT a place for you to open your laptops and start to code with me. In fact, you are encouraged NOT to bring your laptops to class to use them for any purpose. It is distracting to other students. Phone (smart or otherwise) and tablet use during class meetings is also strongly discouraged. Listen, understand, ask questions, and take notes in a notebook if you need to. You will learn more! There will be scheduled class meetings in the lab. I will announce these and this is where you will be doing the coding under my supervision.
The assignments in this course are a place for you to exercise your learning of the concepts and apply them in actual working programs. The best way to get the most of of this course is to try out and code the concepts learned in the class (outside the class!). Do not be afraid to try things! This will improve your understanding and raise questions that you should feel free to bring forward in class. A quick word of advice: stay abreast of the material covered in class, and start your assignments on the day they are announced.
Submission, Late Policy, and Making Up Past Work
All work must be turned in either in hard-copy or electronic submission, depending on the instructions given in the assignment. E-mail submissions, when permitted, should request a "delivery receipt" to document time and date of submission. Extensions will be given only in the case of verifiable medical excuses or other such dire circumstances, if requested in advance and supported by your Academic Dean.Exams
There will be three exams in this course. The exams will be closed-book and closed-notes. The exams will cover material from lectures, homeworks, and assigned readings.
Study Groups
I encourage you to discuss the material and work together to understand it. Here are some thoughts on collaborating with other students:
Created on July 28, 2014.