CS 215: Introduction to Program Design, Abstraction, and Problem

CS 215: Introduction to Program Design,
Abstraction, and Problem Solving
Spring 2015, Section 401
Course Description: This course covers introductory object-oriented problem solving, design, and programming
engineering. Fundamental elements of data structures and algorithm design will be addressed. An equally balanced
effort will be devoted to the three main threads in the course: concepts, programming language skills, and rudiments
of object-oriented programming and software engineering. (4 credit hours)
Prerequisites: CS 115, 221, or equivalent.
Course web page: http://www.cs.uky.edu/~xiwei/cs215/
1
Meeting Times and Places
Lecturer: Xiwei Wang (Email: J.Wang@uky.edu)
Lab instructor and grader: Joedocei(Joe) Hill (Email: jqhi222@uky.edu)
Lecture: W 6:00pm-8:00pm, F Paul Anderson Tower (FPAT) 263
Lab: T 6:00pm-8:00pm, Ralph G Anderson (RGAN) 211
2
Office Hours
My office hours are TBD.
3
Course Materials and Facilities
While additional course materials (in the form of assignments, problem sets, and additional readings)
will be provided online through the course web page, you are responsible for obtaining a copy of
the course’s textbook. The course web page, source control system, and email to students will all
be used to disseminate required information for the course. Slides from the lectures will be posted
online, but are not a substitute for attending class.
3.1
Textbook
The required text for the course is C++ For Everyone (Second Edition), by Cay Horstmann (Wiley, ISBN 978-0-470-92713-7). The publisher maintains a companion web site for the book at http:
//bcs.wiley.com/he-bcs/Books?action=index&itemId=0470927135&bcsId=6146. In particular, chapters 11 through 14 are available as a web-only supplement (PDF downloads) at http://
bcs.wiley.com/he-bcs/Books?action=resource&bcsId=6146&itemId=0470927135&resourceId=
22685. Both links are posted for your convenience on the course web site.
3.2
Computing facilities and programming environment
Lab sessions will be held in the computer lab in RGAN 211. All lab exercises and programming
assignments will be compatible with the virtual desktops available to students at http://apps.uky.
edu/. The course will be taught (and assignments designed with) the Visual Studio 2012 IDE; this
IDE will be available both from the virtual desktop above and through the DreamSpark (MSDNAA)
CS 215 Spring 2015
1
January 17, 2015
program through the university to students of computer science classes. It is also installed on most
of the computer labs on campus. The first lab session will be focused on familiarizing students with
these resources. If you use a newer version of Visual Studio to work on your assignment, you might
lose the ability to load the assignment on the lab computers.
The DreamSpark web store is available online at http://e5.onthehub.com/WebStore/Welcome.
aspx?vsro=8&ws=4fbfccac-db9b-e011-969d-0030487d8897.
3.3
Assignment submissions
All assignments and exercises must be submitted electronically through CSPortal (https://www.
cs.uky.edu/csportal/). In general, late assignments of any type will not be accepted without
an excused absence. Please contact your instructor in advance if you anticipate having an excused
or unexcused absence. Every excused absence must be accompanied by documentation in writing
provided to your instructor. If technical problems prevent submitting an assignment in the normal
way, contact your instructor before the deadline to arrange an alternative.
4
Grading, Assignments, and Exams
Programming Assignments
Weekly Assignments (labs, problem sets)
Attendance and participation
Midterm Exam
Final Exam
35%
30%
10%
10%
15%
Grades for all assignments will typically be posted and available for discussion with your grader
in no more than a week since the submission deadlines.
4.1
Programming assignments
There will be four programming assignments distributed throughout the semester. Each programming assignment will be announced in class with instructions and grading notes provided through
the class web site, and a project template will also be available. Together, these assignments will
constitute 35 percent of your grade, with some assignments worth slightly more than others.
Extra credit may be available on some programming assignments. Your instructor can provide
help during office hours, but students working on the main part of the assignment have priority.
Bonus points should only be attempted after you have completed the rest of the assignment. In
particular, extra credit will not be granted for any incomplete submission, nor for any submission
where the student receives less than 60% of the available non-bonus points.
4.2
Weekly assignments
During most weeks, a problem set will be assigned on Monday, available on the class web site, and
will be due Friday night at midnight. A lab exercise will be assigned on Tuesday, covered during
the lab session, and due Wednesday at midnight. Together these assignments will compromise 30
percent of your final grade.
CS 215 Spring 2015
2
January 17, 2015
4.3
Attendance and participation
Beginning with the second week (Tuesday 20 January), attendance will be taken in lecture and lab.
Attendance will constitute 10 percent of your final grade.
4.4
Midterm and final exams
The midterm (Wednesday, 4 March, normal lecture time and location) and final (Monday, 4 May,
normal lecture time and location) will be worth 10 and 15 percent of your final grade, respectively.
Note that the time of the final exam is a function of the university’s final exam schedule, and we
have no influence or control over it. Make-up exams will be provided only with an excused absence,
or in the case of the final, with documentation of a conflicting exam. Please let the instructor know
as early as possible if you require a different exam time.
5
Curve
There may be a curve on exams and on the final grade, taking the form of a small fixed bonus
(possibly zero) added to all non-zero scores. The amount of each curve will be announced after
class averages for the respective assignment or grade has been determined. Curves will never lower
your score, only raise it or keep it the same.
6
Other rules and policies
See Section 4 for rules and policies related to grading and attendance. See also the Student Rights
and Responsibilities handbook at http://www.uky.edu/StudentAffairs/Code/ for more details
on these and other policies.
6.1
Academic Dishonesty and Plagiarism
All assignments in class are individual work. All work submitted as part of the class must be your
own. You may not share work (whether from weekly problem sets, lab exercises, or programming
assignments), nor may you use code you found online, or provided to you by anyone except your
instructor. You may not show your answers to another student: if you do and the answers are
copied, you will both be held responsible. You may not sign in for another student or have another
student sign in for your attendance grade. You may not bring notes of any form to an exam without
the instructor’s permission. Academic offenses will be taken seriously, and the minimum penalty
for academic dishonesty will be a score of zero assigned to the affected assignment. Note that for
this purpose, the entire attendance section of your final grade is considered one assignment.
6.2
Attendance and professionalism
You are expected to attend and pay attention to every session of class. Students are expected to
be engaged while in class and not to provide distractions for other students present. The use of
electronic devices other than laboratory computers is not permitted in general during class sessions.
If you require a computer or other electronic device to take notes, please contact the instructor for
accommodations: see Section 6.4 below.
CS 215 Spring 2015
3
January 17, 2015
6.3
Harassment and discrimination
No form of harassment or discrimination, for any reason, will be tolerated. UK’s harassment and
discrimination FAQ is available online from the Office of Insitutional Equity and Equal Opportunity
at http://www.uky.edu/EVPFA/EEO/discrimination_faq.html .
6.4
Accommodations
If you have a documented disability that requires accommodation, please contact the instructor
as soon as possible at the beginning of the course. In order to receive accommodation, you must
provide a letter from the Disability Resource Center on campus.
7
Educational Objectives
This course will introduce the student to object-oriented design, problem solving, and program
engineering. Subjects include data structures, dynamic data allocation, pointers, recursion, and
debugging. The fundamental goal of the course is to introduce the student to the C++ programming
language and to provide the student with a toolkit for solving problems with an object-oriented
programming language, including data types, data structures, algorithm design, recursion, and
debugging.
Proficiency Goals:
• Object oriented approach to programming
• Dynamic memory management
• Recursive programming techniques
• Data structures, such as linked lists, stacks, queues, and trees
• Language constructs not covered in CS-115, such as pointers, dynamic storage
• Language constructs that support data abstraction with an emphasis on object-oriented design
rather than procedural design
• Language constructs that support algorithm design, such as recursive vs. iterative methods
• Determining specifications for a problem
• Designing a solution
• Testing and debugging skills
Familiarity Goals:
• Sorting techniques
• Searching techniques, such as binary search trees
• Algorithm run-time analysis (Big-O notation)
CS 215 Spring 2015
4
January 17, 2015
8
Course Evaluation Questions
The student learning outcomes listed below will appear on the final course evaluation. The goal of
the course is to provide a directed and comprehensive learning experience that will enable you to
offer the highest rating on each of the outcomes. In order for that to happen, you will need to work
hard to do your part—attend lectures, study the material, do the readings from the course text,
complete individual exercises, programs, and labs.
CS 215 Spring 2015
5
January 17, 2015
This course has helped me to improve my ability, my understanding, or my knowledge in the
following categories:
• My ability to analyze a problem, and identify and define the computing requirements appropriate to its solution
• My ability to design, implement, and evaluate a computer-based system, process, component,
or program to meet desired needs
• My ability to solve programming problems using classes
• My ability to solve programming problems using dynamic data and pointers
• My ability to solve programming problems using recursion
• My understanding the basic data structures (linked lists, stacks, queues, trees) and can use
them in programs.
• My understanding the principles of sorting and searching
CS 215 Spring 2015
6
January 17, 2015
9
Schedule of Lectures
Note: This schedule is subject to change. Changes will be announced
on the class web page and by email.
W
T
W
T
W
T
W
T
W
T
W
T
W
T
W
T
W
T
W
T
W
T
W
T
W
T
W
T
W
T
W
M
Date
14 Jan
20 Jan
21 Jan
27 Jan
28 Jan
3 Feb
4 Feb
10 Feb
11 Feb
17 Feb
18 Feb
24 Feb
25 Feb
3 March
4 March
10 March
11 March
17 March
18 March
24 March
25 March
31 March
1 April
7 April
8 April
14 April
15 April
21 April
22 April
28 April
29 April
4 May
CS 215 Spring 2015
Read ch.
2,3,4
2,3,4
4,5,8
4,5,8
6
6
8
8
7,9
7,9
9
9
Notes
Topic
Course introduction, programming environment, “Hello, world”
variables, declarations, and types; conditionals and loops, scope
Strings; functions and parameters, reference parameters;
debugging; formatting
Code tracing; Arrays and vectors, multidimensional arrays
Streams and I/O; header files; file operations; exceptions;
pointers;
C strings, dynamic memory; object-oriented programming,
encapsulation
Classes and methods; constructors and destructors, multiple
compilation, assignment operator
MIDTERM EXAM
9,10
9,10
10
10
11,13
11,13
12,13
12,13
12,14
12,14
TBD
TBD
TBD
TBD
TBD
TBD
-
Tracing objects, “Has-a” relationship, this pointer; inheritance,
code reuse, pointers to objects, operator overloading
Inheritance 2; pointers to objects, polymorphism and virtual
functions; static and dynamic types, abstract base classes
Recursion; lists, stacks, and queues
Lists, stacks, and queues 2; time complexities, lists
implementation
Searching and sorting
Searching and sorting 2; sets and maps;
Binary search trees
Special topics, final review
FINAL EXAM
7
January 17, 2015