CS400: Programming III
Spring 2019 Lectures 001, 002 and 004
HOME (https://pages.cs.wisc.edu/~deppeler/cs400/index.html) Canvas (https://canvas.wisc.edu/) 201901 (https://canvas.wisc.edu/courses/143052) cs400_syllabus.pdf (https://
pages.cs.wisc.edu/~deppeler/cs400/pages/cs400_syllabus.pdf) Syllabus (https://pages.cs.wisc.edu/~deppeler/cs400/syllabus.html) Weekly Schedule (https://pages.cs.wisc.edu/~deppeler/
cs400/weekly_schedule.html) Assignments (https://pages.cs.wisc.edu/~deppeler/cs400/assignments.html) Exams (https://pages.cs.wisc.edu/~deppeler/cs400/exams.html) Grading (https://
pages.cs.wisc.edu/~deppeler/cs400/grading.html)
Refresh page to see latest announcements. [Readings] (./readings)
Piazza (./piazza.html)
Announcements
Resources (./resources.html)
• We have released scores for all assignments. Getting Started with Linux (pdf) (https://pages.cs.wisc.edu/~deppeler/cs400/resources/linux-
• We hope to complete review of all grades on Tuesday and to submit final grades on Wednesday. tutorial/linux-tutorial.pdf)
SYLLABUS for Spring 2019, Lectures 001, 002 & 004
Instructor
CS400 Fall 2019
Deb Deppeler Lecture 001 Meetings Lecture 002 Meetings
[TODO: ADD PHOTO] Days: Mondays and Wednesday Days: Tuesdays and Thursdays
Email: deppeler at cs.wisc.edu server Time: 2:30 PM - 3:45 PM Time: 2:30 PM - 3:45 PM
Office: 5376 Computer Sciences (http://www.map.wisc.edu/? Room: 145 Birge Hall (http://www.map.wisc.edu/? Room: 5206 Sewell Social Sciences (http://www.map.wisc.edu/?
initObj=0155) initObj=0084) initObj=0046)
Office Hours: TBD Class Dates: Sep 4, 2019- Dec 11, 2019 Class Dates: Sep 4, 2019- Dec 11, 2019
Midterm Exam: TBD Midterm Exam: TBD
Final Exam: Sat 12/14/2019 5:05pm- 7:05pm Final Exam: Sat 12/14/2019 5:05pm- 7:05pm
Teaching Assistants
Name Email Lab Hours xteam coach for
Gautham Sunjay gautham at cs.wisc.edu Tuesday 3-5p, Wednesday 5-8p 001-015
Katie Zutter zutter at cs.wisc.edu Thursday 3-8p 030-045
Madan Raj hmadanraj at cs.wisc.edu Monday 3-5p, Tuesday 5-8p 114-127
Nivi Hariharan nhariharan at cs.wisc.edu Thursday 3-8p, 016-029
Roshan Lal groshanlal at cs.wisc.edu Tuesday 5-8p, Thursday 5-7p 079-091
Sapan Gupta sapan at cs.wisc.edu Monday 4-9p 100-113
Varun Thumbe thumbe at cs.wisc.edu Monday 3-5p, Tuesday 5-8p 051-064
Vibhor Goel vgoelsj at cs.wisc.edu Wednesday 6-8p, Thursday 5-8p 128-141
Yash Trivedi ytrivedi at cs.wisc.edu Monday, Wednesday 7-9p 065-078
Gautham Katie Madan Raj Nivi Roshan Sapan Varun Vibhor Yash
(photos/ (photos/ (photos/ (photos/ (photos/ (photos/ (photos/ (photos/ (photos/
photo_gautham.jpg) photo_katie.jpg) photo_hmadanraj.jpg) photo_nhariharan.jpg) photo_groshanlal.jpg) photo_sapan.jpg) photo_varun.jpg) photo_vgoelsj.jpg) photo_yash.jpg)
Course Description
More Data Structures and Project Design and Development. You will learn about and analyze efficient data structures, work in teams, find, install, and use professional development tools,
design, implement, test, and publish an application with a user friendly graphical user interface.
Official Course Description:
The third course in our programming fundamentals sequence. It presumes that students understand and use functional and object-oriented design and abstract data types as needed. This
course introduces balanced search trees, graphs, graph traversal algorithms, hash tables and sets, and complexity analysis and about classes of problems that require each data type. Students
are required to design and implement using high quality professional code, a medium sized program, that demonstrates knowledge and use of latest language features, tools, and conventions.
Additional topics introduced will include as needed for projects: inheritance and polymorphism; anonymous inner classes, lambda functions, performance analysis to discover and optimize
critical code blocks. Students learn about industry standards for code development. Students will design and implement a medium size project with a more advanced user-interface design, such
as a web or mobile application with a GUI and event- driven implementation; use of version-control software.
Pre-Reqs:
COMP SCI 300, graduate or professional standing, or declared in the Capstone Certificate in Computer Sciences for Professionals
Learning Outcomes
Students will be able to ...
1. describe, use, and implement efficient data structures including balanced search trees, hash tables, and graphs.
2. work effectively in project teams by establishing goals, rules of conduct, and effective communication strategies
3. analyze the complexity and performance of different algorithm and data structure choices
4. prepare and present program design choices to stakeholders
5. able to define custom data structures and implement desired operations as needed
6. design and implement an effective dashboard graphic user interface
7. find, install, configure, and use language and project development tools
Credit Hours
Lectures meet for 150 minutes each week over the fall/spring semester and carries the expectation that students will work on course learning activities (reading, writing, problem sets, studying,
etc) for about 9 hours out of classroom each week. Additional time is typically required for completing graded programming assignment work..
Grading
Final grades are based on a student's quantity and quality of work as determined by their final weighted percentage. Letter grades for students near a border are determined by their exam
percentage.
Note: Canvas computes a total percentage based on the points for each item in each category. This is a reasonable estimate. However, in some cases, the number of points for graded work
does not reflect actual the weight of a given assignment.
Final Weighted Percentage
• (20%) Final Exam
• (20%) Midterm Exam
• (20%) Final Project (milestones weighted by points - individual work and team work and peer review work is required)
• (20%) Programming Assignments (weighted by points - individual)
• (10%) X-Team Discussion exercises (weighted by points - individual work and peer review work is required)
• (10%) Homework Assignments (each assignment weighted equally)
University Letter Grade Scale
This grade scale is included for some context. But, the actual percentages used may be adjusted if the average grades show a higher difficulty for exams and other graded work. I expect that
the average final grade in the course for students who complete all components of the course will be a B or bettter.
• A - 94% or better
• AB - 89% or better
• B - 82% or better
• BC - 76% or better
• C - 70% or better
• D - 66% or better
Attendance and Class Participation
Students are required to attend lecture as exams will cover information presented in lectures. Students are encouraged to meet each other and work to form study groups. Such groups are
helpful for exam review sessions and if you must miss a lecture for any reason.
Students are encouraged to present their work at the Undergraduate Symposium, April 12th (https://ugradsymposium.wisc.edu/) at Union South. Meet with your instructor if you have an idea or
project you would like to create and present.
Religious Observances
Students must notify me within the first two weeks of class of the specific days or dates which they will not be able to complete mandatory course assignments.
McBurney Statement
The University of Wisconsin-Madison supports the right of all enrolled students to a full and equal educational opportunity. The Americans with Disabilities Act (ADA), Wisconsin State Statute
(36.12), and UW-Madison policy (Faculty Document 1071) require that students with disabilities be reasonably accommodated in instruction and campus life. Reasonable accommodations for
students with disabilities is a shared faculty and student responsibility. Students are expected to inform faculty [me] of their need for instructional accommodations by the end of the third week of
the semester, or as soon as possible after a disability has been incurred or recognized. Faculty [I], will work either directly with the student [you] or in coordination with the McBurney Center to
identify and provide reasonable instructional accommodations. Disability information, including instructional accommodations as part of a students educational record, is confidential and
protected under FERPA.
In addition to completing an electronic Faculty Notification Letter request through McBurney Connect, students must also contact the instructor [me] directly by the end of the third week of the
semester to set up a meeting to discuss the necessary accommodations. The instructor [I] may be unable to meet accommodation requests for students who fail to initiate a meeting by the end
of the third week of the semester.
Work in Teams
In CS400, we will require you to work in teams for some assignments. We will have several required activities designed to help students learn team building skills that will help them have a
productive and rewarding team work experience. We may combine and split up teams in extreme cases. Students should treat all team assignments with the same importance as they would
treat a team project their boss assigned them.
Part way through the semester we will create final project teams based on students preferences, skills, and availability.
Exams (Fall 2021)
• Midterm Exam, Wednesday, October 20th, 6:30-8:30 PM
• Final Exam, Wednesday, December 15th, 6:00-8:00 PM
[an error occurred while processing this directive]
Weekly Schedule of Topics
Schedule is tentative for Spring 2019. Changes are possible as we see how much is covered each week.
Last Updated: 9/19/2018
Course Intro, Linux, and Black Box Unit Testing
Week Read: Read articles and watch videos as posted in Module 1 on Canvas site.
1: Lecture outlines: Week 1 outline (./outlines/outlineW01.pdf)
Binary Search Trees: Terms, operations,
Week Read: Trees (https://pages.cs.wisc.edu/%7Edeppeler/cs400/readings/Trees/index.html) Binary-Search-Trees (https://pages.cs.wisc.edu/%7Edeppeler/cs400/readings/Binary-
2: Search-Trees/index.html),
Lecture outlines: Week 2 outline (./outlines/outlineW02.pdf)
X-Teams (Exercise 1), Balanced Search Trees (AVL)
Week Read: AVL Trees (https://pages.cs.wisc.edu/%7Edeppeler/cs400/readings/AVL-Trees/index.html), JUnit 4 (https://junit.org/junit4/) JUnit 5 (https://junit.org/junit5/)
3: Lecture outlines: Week 3 outline (./outlines/outlineW03.pdf)
Red-Black Tree
Week Read: Red-Black Trees (https://pages.cs.wisc.edu/%7Edeppeler/cs400/readings/Red-Black-Trees/index.html)
4: Lecture outlines: Week 4 outline (added p11-p14) (./outlines/outlineW04.pdf)
Git/GitHub, 2-3, 2-3-4, and B+ Trees
Week Read: UPL's Git-Tutorial (https://github.com/UW-UPL/Git-Tutorial) 2-3 Trees (https://pages.cs.wisc.edu/%7Edeppeler/cs400/readings/23Trees/index.html)
5: Lecture outlines: Week 5 outline (./outlines/outlineW05.pdf)
Hashing, Collision Resolution, Hash Tables
Week Read:
6: Hashing (https://pages.cs.wisc.edu/%7Edeppeler/cs400/readings/Hashing/index.html), [optional] SHA-1 Algorithm (http://www.faqs.org/rfcs/rfc3174.html), O'Reilly on Nested
Classes (https://www.oreilly.com/library/view/java-generics-and/0596527756/ch04s03.html),
Lecture outlines: Week 6 outline (./outlines/outlineW06.pdf)
Finish Hashing, Graph Terminology
Week Read: Graphs (https://pages.cs.wisc.edu/%7Edeppeler/cs400/readings/Graphs/index.html)
7: Lecture outlines: Week 7 outline (./outlines/outlineW07.pdf)
Graphs: Edge Representations, Traversals and Spanning Trees
Week Read: Graphs (https://pages.cs.wisc.edu/%7Edeppeler/cs400/readings/Graphs/index.html)
8: Lecture outlines: Week 8 outline (./outlines/outlineW08.pdf)
Graphs: Spanning Trees, Topological Ordering, Dijkstra's Shortest Path
Week Sets, Linear Sorts
9: Read: Sets (https://pages.cs.wisc.edu/%7Edeppeler/cs400/readings/Sets/index.html), Complexity (https://pages.cs.wisc.edu/%7Edeppeler/cs400/readings/Review/
Complexity/index.html), Sorting Review and Linear Sorts (https://pages.cs.wisc.edu/%7Edeppeler/cs400/readings/Review/Sorting/index.html), Flashsort Algorithm (http://
www.neubert.net/Flapaper/9802n.htm) by Karl-Dietrich Neubert
Lecture outlines: Week 9 outline (./outlines/outlineW09.pdf),
Project Intros, Enumerations, Interfaces, OO Design: Diagrams and Documents, UNIX commands, shells, scripts, vim and Makefiles
Week Read: Unix Makefile Tutorial (https://www.tutorialspoint.com/makefile/index.htm), Enums (https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html), Nested Classes
10: (https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html), Inner Class Example (https://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html), Local Classes
(https://docs.oracle.com/javase/tutorial/java/javaOO/localclasses.html), Anonymous ClasAses (https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html),
Lecture outlines: Week 10 outline (./outlines/outlineW10.pdf)
Java FX: User Interface Controls
Week Java 8: Functional Interfaces
11: Read: Functional programming in Java 8 Using Lambda Expressions (http://www.tothenew.com/blog/functional-programming-in-java8-using-lambda-expressions/), Lambda
expressions (https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html),
Lecture outlines: Week 11 outline (./outlines/outlineW11.pdf)
Makefiles, JavaFX Main.java, UI Controls, Panels, Scenes
Week Read: Java FX: Create a Form (https://docs.oracle.com/javafx/2/get_started/form.htm), JavaFX: Hello World (https://docs.oracle.com/javafx/2/get_started/hello_world.htm)
12: Lecture outlines: Week 12 outline (./outlines/outlineW12.pdf)
EventHandlers, Functional Interfaces, and Streams
Week Read: Java 8 Streams Part I (https://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html), Java 8 Streams Part II (https://www.oracle.com/
13: technetwork/articles/java/architect-streams-pt2-2227132.html), java.util.stream.Stream API (https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-
summary.html),
blog.jenkster.com What is Functional Programming (http://blog.jenkster.com/2015/12/what-is-functional-programming.html),
Quora.com What is Functional Programming (https://www.quora.com/What-is-functional-programming),
dev.io How to write an awesome GitHub README (https://dev.to/healeycodes/how-to-write-an-awesome-github-readme-2ldc),
Spring 2019 Final Project Design Doc (Quiz Generator) (pdf) (outlines/design_201901.pdf),
Lecture outlines: Week 13 outline (./outlines/outlineW13.pdf)
HTML/CSS/JS
Week Read: www.w3school.com: HTML (https://www.w3schools.com/html/), CSS (https://www.w3schools.com/css/), and JS (https://www.w3schools.com/js/)
14: Clean Code (https://medium.com/s/story/reflections-on-clean-code-8c9b683277ca), Object-Oriented vs Functional Programming (https://medium.com/javascript-scene/10-
interview-questions-every-javascript-developer-should-know-6fa6bdf5ad95),
Just say no to more end to end tests (https://testing.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html),
Computer Science ethics course (https://www.nytimes.com/2018/02/12/business/computer-science-ethics-courses.html), ()
Lecture outlines: Week 14 outline (./outlines/outlineW14.pdf)
Course Overview Summary (./outlines/outlineW14-summary.pdf)
Test Driven Development (TDD), Catch Up and Review
Week Read: ()
15:
Lecture outlines:
Student Conduct
Submit only authorized code.
Authorized Work and Code
• YOUR answer to a Homework question
• YOUR answer to an Exam question
• YOUR answer to a Top Hat question
• YOUR question or answer on Piazza
• Code written by any named author(s) of the assignment.
• Code that is presented in readings, or lecture.
• Code that is provided in assignment.
• Code that is provided by TAs to all students.
• Code written with assistance from a tutor. The tutor must be cited by name and email address with the code they assisted.
• Unsolicited code found posted on the internet in public forums or tutorials, if it is kept to a few lines of code and the code's source is documented. The source (URL) of the code must be
included with the source code that is used.
Unauthorized Work and Code
• Copying any work from ANYONE ELSE's homework or exam
• Submitting Top Hat responses for anyone other than yourself.
• Submitting questions or answers for anyone other than yourself.
• Code that is not authorized (in list above).
i. Code that was written by your classmate, friend, roommate, other person not in your team.
ii. Code that was sent to you by anyone other than your team mate, instructor, or TA.
iii. Code that was solicited from an coding forum.
iv. Code that was solicited from a coding service.
v. Code that was found on a printout at the printer.
vi. Code that was viewed on a classmate's phone, computer, printout, or other.
• There are certainly other ways to acquire unauthorized code. If you didn't write it, assume it is unauthorized or ask.
Course Policies for submitting unauthorized work or code
Work that is investigated and found to have violated the code of conduct will be reported to the Dean of Students. Students have the right to appeal any report of Academic Misconduct.
• Students caught submitting Top Hat responses from anywhere other than the lecture in question will get a zero for all Top Hat participation.
• Students caught submitting Piazza or Top Hat responses for another student will get a zero for all Piazza and Top Hat participation.
• Students caught cheating on either exam will get a zero for both exams.
• Projects that contain unauthorized code will earn a zero for ALL members of the project's team.
• There is a 24 hour amnesty period. If, in a moment of weakness, you or a team member submits unauthorized code, any team member may discover and request that the submission be
withdrawn.
There is 24 hours to withdraw such a submission. To withdraw a submission (for any reason), send email to your instructor indicating which files of which submission (date and time)
to withdraw. You do not need to say why. In such a case, your team will receive credit based on other work that was submitted ontime. There is no opportunity to submit different work
unless it is still before the due date and time.
Tip: Do your work and don't cheat by using other people's work!
See About Student Conduct (https://conduct.students.wisc.edu/) for more information regarding your rights and responsibilities.
HOME (https://pages.cs.wisc.edu/~deppeler/cs400/index.html) Canvas (https://canvas.wisc.edu/) 201901 (https://canvas.wisc.edu/courses/143052) cs400_syllabus.pdf (https://
pages.cs.wisc.edu/~deppeler/cs400/pages/cs400_syllabus.pdf) Syllabus (https://pages.cs.wisc.edu/~deppeler/cs400/syllabus.html) Weekly Schedule (https://pages.cs.wisc.edu/~deppeler/
cs400/weekly_schedule.html) Assignments (https://pages.cs.wisc.edu/~deppeler/cs400/assignments.html) Exams (https://pages.cs.wisc.edu/~deppeler/cs400/exams.html) Grading (https://
pages.cs.wisc.edu/~deppeler/cs400/grading.html)
Report broken links and accessibility issues to deppeler at server cs.wisc.edu
Copyright ©2018 Debra Deppeler, All rights reserved.