{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# CS206: Data Structures\n", "## Bryn Mawr College\n", "### Spring 2017\n", "### Professor Douglas Blank" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Table of Contents\n", "* [1. General Information](#1.-General-Information)\n", "* [2. Syllabus and Schedule](#2.-Syllabus-and-Schedule)\n", "\t* [2.1 Schedule](#2.1-Schedule)\n", "\t* [2.2 Important Dates](#2.2-Important-Dates)\n", "* [3. Text and Software](#3.-Text-and-Software)\n", "\t* [3.1 Text](#3.1-Text)\n", "\t* [3.2 Software](#3.2-Software)\n", "* [4. Course Policies](#4.-Course-Policies)\n", "\t* [4.1 Participation](#4.1-Participation)\n", "\t* [4.2 Grading](#4.2-Grading)\n", "\t\t* [4.2.1 Assignments](#4.2.1-Assignments)\n", "\t* [4.3 Submission and Late Policy](#4.3-Submission-and-Late-Policy)\n", "\t* [4.4 Exams](#4.4-Exams)\n", "\t* [4.5 Study Groups](#4.5-Study-Groups)\n", "* [5. Reference Links](#5.-Reference-Links)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. General Information" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* **Instructor** : Douglas Blank\n", "* **Office hours** : Mon, Tue, Wed, Thu 10am-11am\n", "* **E-Mail** : [dblank@cs.brynmawr.edu](mailto:dblank@cs.brynmawr.edu)\n", "* **Website** : http://cs.brynmawr.edu/cs206/\n", "* **Class** : Mondays and Wednesdays 1:10pm - 2:30pm\n", "* **Room** : Park Science Building, room 349\n", "* **Phone** : (610)526-6501\n", "* **Open Lab** : Park Science, room 231 Wednesdays 2:30pm - 4:00pm\n", "* **Lab Assistants** : TA sessions are in Park Science, room 231 (some TAs are cs110-specific, but maybe can still help)\n", " * Monday: 6pm-8pm (Sophie, and Rose); 8pm-10pm (Hyunjung and Lizzie)\n", " * Tuesday: 6pm-8pm (My); 8pm-10pm (Eileen, Lizzie, and Marilyn)\n", " * Wednesday: 6pm-8pm (Mary and Kennedy); 8pm-10pm (Eileen and Rose)\n", " * Thursday: 6pm-8pm (Mary and Kennedy); 8pm-10pm (Hyunjung, Marjorie, and My)\n", " * Sunday: 6pm-8pm (Marilyn); 8pm-10pm (Marjorie and Sophie)\n", "* **Grades** : http://moodle.brynmawr.edu/\n", "* **Jupyter, login** : https://athena.brynmawr.edu/jupyter/" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. Syllabus and Schedule" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Course Description**: 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." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.1 Schedule" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", " 2017 \n", "\n", " January February March \n", "Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa\n", " 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4\n", " 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11\n", "15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18\n", "22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25\n", "29 30 31 26 27 28 26 27 28 29 30 31\n", "\n", " April May June \n", "Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa\n", " 1 1 2 3 4 5 6 1 2 3\n", " 2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10\n", " 9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17\n", "16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24\n", "23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30\n", "30\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Week | Date | Topic | Activity | Lab Assignment \n", "---- | ---- | ----- | ---------- | ----- \n", "1 | Jan 18 | [Introduction to Java](Notebooks/IntroToJava.ipynb) | Get accounts, create a notebook | Lab1\n", "2 | Jan 23 | Java Language: syntax | [In-class activity](Notebooks/Jan21-inclass.ipynb); read Appendix A | functions (parameters/arguments, calling), booleans, control, etc.\n", " | Jan 25 | **No class or lab today** | On your own | Lab2\n", "3 | Jan 30 | [Variables, Functions, and Loops](Notebooks/Variables%2C%20Functions%2C%20and%20Loops.ipynb), [OOP](Notebooks/Object-OrientedProgramming.ipynb) | For Thursday, bring 3 questions of your own making based on the material from Appendix A | \n", " | Feb 1 | Data Structures | [LinkedList](Notebooks/LinkedExamples.ipynb), [LinkedListSummary](Notebooks/LinkedListSummary.ipynb) |\n", "4 | Feb 6 | [Recursion and Stacks](Notebooks/LinkedListSummary.ipynb) | Read Chapter 1, 5; Recursion: Chapter 5 | [Interfaces](Notebooks/Interfaces.ipynb), and [Inheritance](Notebooks/Inheritance.ipynb)\n", " | Feb 8 | Abstractions, ADT, and Interfaces, [BinaryTrees](Notebooks/BinaryTrees.ipynb) | Read Chapter 2 | Lab3\n", "5 | Feb 13 | BinaryTrees | Read Chapter 2.4; Trees: Chapter 6 | \n", " | Feb 15 | BinaryTrees | | \n", "6 | Feb 20 | [Stacks and Queues](Notebooks/Stacks%20and%20Queues.ipynb) | Chapter 3, 4 | \n", " | Feb 22 | [Stacks and Queues]((Notebooks/Stacks%20and%20Queues.ipynb) | | \n", "7 | Feb 27 | Review | [Review notes](https://docs.google.com/presentation/d/1inNOuMCreOK3-mCLPAzTmEoc5m9HDSSTZ8Y_Dj4sBv4/edit?usp=sharing) |\n", " | Mar 1 | **Exam #1**\n", "8 | Mar 6 | **Spring break - No classes** ||\n", " | Mar 8 | **Spring break - No classes** ||\n", "9 | Mar 13 | [Sorting, Files, and Graphs](Notebooks/Sorting%2C%20Files%2C%20Graphs.ipynb) | Sorting: Chapter 8; Graphs: Chapter 10; Files: Appendix A.10 | Lab5\n", " | Mar 15 | Sets and Maps | Read Chapter 7 | \n", "10 | Mar 20 | Dictionaries | POGIL Activity |\n", " | Mar 22 | Hashing | POGIL Activity | \n", "11 | Mar 27 | HashMaps and HashSets | |\n", " | Mar 29 | [AVL Trees](Notebooks/AVL Trees.ipynb) | Read Chapter 9 | \n", "12 | Apr 3 | [Other Self-Balancing Search Trees](Notebooks/Self-Balancing Search Trees.ipynb) | |\n", " | Apr 5 | Red-Black Trees | | \n", "13 | Apr 10 | Graphs | Read Chapter 10 |\n", " | Apr 12 | [Graphs](Notebooks/Graphs.ipynb) | | \n", "14 | Apr 17 | Hand out [Review Sheet](Notebooks/Data Structure Review.ipynb) | Work on Projects |\n", " | Apr 19 | Review | Work On Projects: Game Design | \n", "15 | Apr 24 | Presentations | |\n", " | Apr 26 | Presentations | |\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The final exam is self-scheduled during exam week." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.2 Important Dates" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* MLK, Jr. Day - Mon, Jan 16\n", "* Dorms open - Fri, Jan 13 (noon)\n", "* classes begin - Tue, Jan 17\n", "* spring vacation - Fri, Mar 3 - Sun March 12\n", "* last day of classes - Fri, Apr 28\n", "* review period - Sat, Apr 29\n", "* exam period - Sun, Apr 30 - Mon, May 1\n", "* last day (senior exams) - Sat, May 6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Text and Software" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.1 Text" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n",
"![]() | \n",
"\n", "**Data Structures: Abstraction & Design Using Java, 2nd Edition**. Elliot B. Koffman & Paul A. Wolfgang, Wiley 2010.\n", " | \n", "