CS400: Programming III

Spring 2019 Lectures 001, 002 and 004

   Refresh page to see latest announcements. [Readings]

Announcements

  • We have released scores for all assignments.
  • We hope to complete review of all grades on Tuesday and to submit final grades on Wednesday.
  • Piazza
    Resources
    Getting Started with Linux (pdf)


    SYLLABUS for Spring 2019, Lectures 001, 002 & 004

    Instructor

    CS400 Fall 2019
    Deb Deppeler Lecture 001 Meetings Lecture 002 Meetings

    [TODO: ADD PHOTO]
    Email: deppeler at cs.wisc.edu server
    Office: 5376 Computer Sciences
    Office Hours: TBD

    Days: Mondays and Wednesday
    Time: 2:30 PM - 3:45 PM
    Room: 145 Birge Hall
    Class Dates: Sep 4, 2019- Dec 11, 2019
    Midterm Exam: TBD
    Final Exam: Sat 12/14/2019 5:05pm- 7:05pm

    Days: Tuesdays and Thursdays
    Time: 2:30 PM - 3:45 PM
    Room: 5206 Sewell Social Sciences
    Class Dates: Sep 4, 2019- Dec 11, 2019
    Midterm Exam: TBD
    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-7p079-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

    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 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 student’s 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

    Week 1:

    Course Intro, Linux, and Black Box Unit Testing
    Read: Read articles and watch videos as posted in Module 1 on Canvas site.
    Lecture outlines: Week 1 outline

    Week 2:

    Binary Search Trees: Terms, operations,
    Read: Trees Binary-Search-Trees,
    Lecture outlines: Week 2 outline

    Week 3:

    X-Teams (Exercise 1), Balanced Search Trees (AVL)
    Read: AVL Trees, JUnit 4 JUnit 5
    Lecture outlines: Week 3 outline

    Week 4:

    Red-Black Tree
    Read: Red-Black Trees
    Lecture outlines: Week 4 outline (added p11-p14)

    Week 5:

    Git/GitHub, 2-3, 2-3-4, and B+ Trees
    Read: UPL's Git-Tutorial 2-3 Trees
    Lecture outlines: Week 5 outline

    Week 6:

    Hashing, Collision Resolution, Hash Tables
    Read:
    Hashing, [optional] SHA-1 Algorithm, O'Reilly on Nested Classes,
    Lecture outlines: Week 6 outline

    Week 7:

    Finish Hashing, Graph Terminology
    Read: Graphs
    Lecture outlines: Week 7 outline

    Week 8:

    Graphs: Edge Representations, Traversals and Spanning Trees
    Read: Graphs
    Lecture outlines: Week 8 outline

    Week 9:

    Graphs: Spanning Trees, Topological Ordering, Dijkstra's Shortest Path
    Sets, Linear Sorts
    Read: Sets, Complexity, Sorting Review and Linear Sorts, Flashsort Algorithm by Karl-Dietrich Neubert
    Lecture outlines: Week 9 outline,

    Week 10:

    Project Intros, Enumerations, Interfaces, OO Design: Diagrams and Documents, UNIX commands, shells, scripts, vim and Makefiles
    Read: Unix Makefile Tutorial, Enums, Nested Classes, Inner Class Example, Local Classes, Anonymous ClasAses,
    Lecture outlines: Week 10 outline

    Week 11:

    Java FX: User Interface Controls
    Java 8: Functional Interfaces
    Read: Functional programming in Java 8 Using Lambda Expressions, Lambda expressions,
    Lecture outlines: Week 11 outline

    Week 12:

    Makefiles, JavaFX Main.java, UI Controls, Panels, Scenes
    Read: Java FX: Create a Form, JavaFX: Hello World
    Lecture outlines: Week 12 outline

    Week 13:

    EventHandlers, Functional Interfaces, and Streams
    Read: Java 8 Streams Part I, Java 8 Streams Part II, java.util.stream.Stream API,
    blog.jenkster.com What is Functional Programming,
    Quora.com What is Functional Programming,
    dev.io How to write an awesome GitHub README,
    Spring 2019 Final Project Design Doc (Quiz Generator) (pdf),
    Lecture outlines: Week 13 outline

    Week 14:

    HTML/CSS/JS
    Read: www.w3school.com: HTML, CSS, and JS
    Clean Code, Object-Oriented vs Functional Programming,
    Just say no to more end to end tests,
    Computer Science ethics course,
    Lecture outlines: Week 14 outline
    Course Overview Summary

    Week 15:

    Test Driven Development (TDD), Catch Up and Review
    Read:

    Lecture outlines:

    Student Conduct

    Submit only authorized code.

    Authorized Work and Code

    Unauthorized Work and Code

    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.

    Tip: Do your work and don't cheat by using other people's work!

    See About Student Conduct for more information regarding your rights and responsibilities.



    Report broken links and accessibility issues to deppeler at server cs.wisc.edu
    Copyright ©2018 Debra Deppeler, All rights reserved.