Cs32 Homework 13

CS 32: Introduction to Computer Science II

Computer Science Department
University of California, Los Angeles
Summer 2015

SYLLABUS

Course Objectives

In this course, you will learn how to employ data abstraction to build programs larger than those you constructed in CS 31. You will learn how to use a variety of data structures in the course of solving problems, and importantly, how to analyze what data structures and algorithms are most appropriate for a given problem. In addition, you will deepen your understanding of modern programming by learning the principles of object-oriented and generic programming.

Course Website

The URL for the course website is http://cs.ucla.edu/classes/summer15/cs32. You must check the site for announcements at least every other weekday. You must also check your email as regularly.

Instructor and Class Meetings

Lecture 1
MTW 8-9:50
WGYoung CS76
Kung-Hua Chang
kunghua@cs.ucla.edu
Discussion 1A
F 10-11:50
Boelter 3400
Andrew Forney
Discussion 1B
F 12-1:50
Boelter 3400
Thuy Vu
Discussion 1C
F 10-11:50
WGYoung 4216
Katherine Wang

Office hours for the instructor and the TAs are on the class web page.

Schedule of Lecture Topics and Exams

WeekDateTopicsBook
1June. 22Introduction, C++ ReviewChapter 1
 June. 23Data Abstraction, C++ ClassesChapter 1
 June. 24Pointers, Dynamic Arrays, Resource ManagementChapter 3
2June. 29Linked ListsChapters 4 and 8
 June. 30Stacks and QueuesChapters 6, 7, 13, and 14
 July. 1Advanced C++, Inheritance, PolymorphismChapter 3
3July. 6Inheritance, PolymorphismChapter 3
 July. 7Object-Oriented Design Principles, Midterm review 
 July. 8RecursionChapters 2 and 5
4July. 13Midterm exam, part 1 (8:30 to 9:50) 
 July. 14RecursionChapters 2 and 5
 July. 15RecursionChapters 2 and 5
5July. 20Templates, Iterators, STL 
 July. 21Algorithmic Efficiency, SortingChapters 10 and 11
 July. 22SortingChapter 11
6July. 27TreesChapter 15
 July. 28TreesChapter 16
 July. 29Midterm exam, part 2 (8:30 to 9:50) 
7Aug. 3NO LECTURE 
 Aug. 4Tables, Tree-based Tables, Priority QueuesChapter 18
 Aug. 5Heaps, GraphsChapter 17,20
8Aug. 10Review 
 Aug. 11NO LECTURE 
end of 8Aug. 12Final exam, 9:00 AM to 12:00 PM (Rolfe Hall 1200) 

Textbook

The course textbook is Data Abstraction and Problem Solving with C++: Walls and Mirrors, Sixth Edition, by Frank M. Carrano, Addison Wesley, 2013. The Fifth Edition or even the Fourth Edition is acceptable as well.

Good C++ books we could recommend are Accelerated C++, by Andrew Koenig and Barbara E. Moo, Addison Wesley, 2000, and Thinking in C++, Second Edition, by Bruce Eckel, Addison Wesley, 2000; the latter book is available online for free.

Lecture and Discussion Sections

Lectures will present material from the course textbook, supplemented by additional subject matter. You are responsible for all material presented in all lectures.

In discussion sections, your TA will review material covered in the lectures, present subject matter not covered in the lectures, discuss homeworks and programming projects, and answer questions.

Programming Projects and Homeworks

You cannot learn how to write large programs without writing large programs. There will be four programming projects. Your program correctness score is based on your program's correctness as determined by our testing. The amount of time you spent working on the program is irrelevant; indeed, if you follow our software development advice, you'll probably spend less time and get a higher score than if you don't.

Since the projects cannot give you experience with all the material in the course, there will be five homework assignments in addition to the projects. These may require you to answer some questions and analyze or write small programs. Some of the work you put into the homework will do double duty: it will help you with a programming project or will serve as a good study guide for an exam. If you are seriously interested in mastering the course material, you will do every homework problem, even though not every problem of every homework assignment will be graded. (You won't know which problems won't be graded.)

Every C++ program you turn in for this class must run correctly under two compilers: Visual C++ 2013 or 2012 and either clang++ or g++ (either on a Mac or under Linux).

Programming projects and homeworks are due at 9 PM on the dates listed below. Late submissions will be penalized by 0.0027778% per second (which comes to 10% per hour), making a submission worthless if submitted after 7 AM the next morning.

Project 1Monday, June 29
Homework 1 Friday, July 3rd
Project 2 Tuesday, July 14
Homework 2 Wednesday, July 15
Homework 3Monday, July 27
Project 3Monday, August 3
Homework 4 Wednesday, August 5
Project 4Tuesday, August 11
Homework 5Tuesday, August 11

Examinations

The midterms will cover material from the lectures and the textbook. The final examination will cover material from the entire course. Missing the final for any reason will result in a final exam score of zero.

Grading

Your grade in the course will be determined from your total score, although a final exam score below 40 may subject you to a failing grade regardless of your total score. The total score is determined from the graded materials as follows:

Project 1     1%
Project 2   10%
Project 3   10%
Project 4   10%
Homeworks   19%
Midterm exam   20%
Final exam   30%

The total points you earn from projects and homeworks (scaled to 0 through 100) will be capped at 30 points above the mean of your exam scores (scaled to 0 through 100). For example, if you average 90 on the assignments, your midterm score is 60, and your final is 40, then your assignment average is treated as only 80 (because that's 30 more than the mean of 60 and 40). In other words, your assignment scores won't count fully if you can't show from your exam scores that you learned what you should have from the assignments.

A request for reconsideration of the grading for an item must be made within one week of our sending you your score for that item.

You will not earn points on any of your coursework unless you have signed and turned in the Academic Integrity Agreement.

Advanced programming techniques including Java, user interfaces, databases, concurrency, and networking. Covers software design including object-oriented design, and user interfaces (desktop, web, and mobile). Software engineering including testing, debugging, the software lifecycle, and static analysis tools.

LecturesJ Hour: 1:00pm-2:20pm on Tuesdays and Thursdays
RoomMetcalf Auditorium
Lecture NotesPublished after each class
TextEffective Java is recommended but not required
PrerequisiteCSCI 0150, CSCI 0170 or CSCI 0190.
InstructorJohn Jannotti (jj@cs.brown.edu)
Office HoursCIT 449, Tue & Thu: 2:30-5pm
LabsNine weeks of lab held throughout the semester. They cover testing, HTML, Javascript, databases, profiling, canvas, concurrency, websockets, and deployment (optional). There will be nine 2-hour sessions during lab weeks, and students may choose which session to attend.
ProjectsFour projects (Three individual, one pair) that increase in complexity throughout the term from a datastructure implementation with little interface, to a full-fledged graphical application integrating work done on all previous projects.
Group ProjectOne project of your own design. You will work in teams of four on a significant project that you think is important. You will convince your mentor TA that the work is worthwhile, specify its features, design and implement it throughout the term, culminating in a demo day.
IncompletesIncompletes are granted only in exceptional conditions. For your own good, we strongly recommend keeping current. This class maintains a steady pace and each project builds off the previous. It is difficult to fall behind and catch up later.
Late PolicyLabs must be finished in the week they are assigned. For projects, the full late policy is described in the course missive.
GradingLabs: 10%; Participation: 8%; Projects: 10%, 15%, 15%, 15%; Term Project: 27%
Course TimeStudents will spend approximately 3 hours per week in class (40 hours total), and 20 hours total in labs. Homework and other out-of-class work is estimated at approximately 8 hours per week (120 hours).

Lecture and Due Dates

DateTopicProjectLabTerm Project
Jan 25 Intro Stars out
Jan 30 Effective 32
Jan 31 Testing
Feb 1 Interfaces
Feb 6 Testing
Feb 7 HTML
Feb 8 Collections and Generics
Feb 9 Stars due, Autocorrect out
Feb 13 Design Patterns
Feb 14 HTTP/AJAX/JS
Feb 15 Stars Review
Feb 16 Ideas
Feb 20 NO CLASS
Feb 22 Requirements
Feb 23 Autocorrect due, Bacon out Team Forming
Feb 27 Databases
Feb 28 Databases
Mar 1 Autocorrect Review
Mar 2 Project Outline
Mar 6 Specifications
Mar 7 Profiling
Mar 8 User Interfaces
Mar 9 Bacon due
Mar 13 Object/Relational Mapping Maps out
Mar 15 Bacon Review
Mar 16 Specs/Mockup
Mar 20 Thread
Mar 21 Canvas
Mar 22 UI Implementation
Mar 23 Maps CLI due
Mar 27 NO CLASS
Mar 29 NO CLASS
Apr 3 Thread Design Concurrency
Apr 5 Team Design
Apr 10 Web Applications
Apr 11 Concurrency
Apr 12 Maps Review
Apr 13 Maps due
Apr 17 TBD
Apr 18 Websockets
Apr 19 Embedded Languages
Apr 23 4-way
Apr 24 Java 8/9
Apr 25 Deployment (Optional)
Apr 29 React
May 2 Adversary TA Meeting
May 7 Pre-demos
May 7-8 Demo Days

0 Replies to “Cs32 Homework 13”

Lascia un Commento

L'indirizzo email non verrĂ  pubblicato. I campi obbligatori sono contrassegnati *