CS120 Home
Spring 2019, Faculty: Dr. Denise Byrnes
Course Format:
Three hours of lecture and one three hour laboratory. An introduction to the standard set of data structures, algorithm design, algorithm analysis, and the object-oriented problem solving paradigm - all couched in the C++ programming language.
Prerequisites: At least a C- in CS 110
Expanded Description
This course gives an in-depth understanding of how to solve problems using data structures and algorithms.The C++ programming language is used to design the following data structures, among others; strings, vectors, lists, stacks, queues, hash tables, and binary trees.The C++ Standard Template library of data structures is also discussed. Algorithm design is introduced in the context of each data structure, demonstrating the trade-offs of a particular data structure algorithm pair. Techniques to analyze the efficiency of an algorithm are introduced. Software engineering principles for quality software design are stressed. Team projects are used to demonstrate the use of software engineering tools for class design and testing. This class is paired with CS120L - a three hour laboratory.
Course Materials
- Data Abstraction & Problem Solving with C++, 7th
edition
by Carrano and Henry (required) - Lab Manual - A Laboratory Course - C++
Data Structures, Second Edition
by Roberge, Brandle, and Whittington (required and provided via handout) - Class Web Pages are accessible thru http://csweb.wooster.edu
- the course web pages are available through VPN if you are connecting from an off campus network. - Supplementary Handouts and Electronic Lectures (as PowerPoint files) are available via the class website.
- Assignments will be electronically posted to the website prior to the assignment date (check syllabus).
- Book code examples are available on the website but will be tested for correctness only if used in class lecture.
- A thumb drive or disk space in the cloud for saving class and lab work - no work should ever be left on lab machines.
- Electronic submissions are required using the moodle
link for the assignment. Source code only (complete projects
are unnecessary) should be zipped in a folder named
CS120LabiYourName.zip for labs, CS120ProjectiYourName.zip for
projects, or CS120HmkiYourName.zip for homework.
Instructor
-
Dr. Denise Byrnes
dbyrnes@wooster.edu
Office Hours: link
303 Taylor Hall, ext. 2489
Course TA and Grader
-
Lab TA - Bri Richardson Brown, Office Hours - Tuesday
7:30-10-30PM, T200
Course Grader - Morgan Thompson, Office Hours - Thursday 7 - 10PM, T200
Locations / Times
Day | Time | Location | Instructor | |
---|---|---|---|---|
Lecture | MWF | 11AM | 200 Taylor Hall | Dr. Byrnes |
Lab | W | 1-3:50PM | 200 Taylor Hall | Professor Lee |
Course Operation
You can email me at: dbyrnes@wooster.edu to schedule meetings,
negotiate assignment extensions, negotiate excused class
absences or for clarifications.
Homework exercises will reinforce the readings and lectures.
Laboratory assignments will help you develop experience with C++
and object-oriented design.
Homework and lab assignments are available a day or two before
assigned, with homework exercises due at the beginning of class
on the due date.
For the laboratory assignments, we will be using the Macs in
Taylor Hall, room 200. The IDE used for this course is XCode.
All submitted work must execute on a Mac image identical to
that used in T200. For Window and Linux users, CLion is the
only other IDE that will be supported, but your programs must
still execute on a Mac image identical to that used in T200,
so please test your solutions.
Consult the class lecture schedule for due dates of homework exercises and labs.
Course Grading
There will be two midterm exams and a final, covering the
material from the readings and class. Consult the class schedule
to see the dates, times, and locations.
Two Midterm Exams | 20% |
Labs |
30% |
Homework, Projects | 20% |
Final |
20% |
Class Participation | 10% |
Labs
Labs will be held in Taylor Hall room 200 and are scheduled on most Wednesdays - please refer to the syllabus.
Labs are organized via the class web site. You are expected to come prepared with:
- A thumb drive or disk space to save lab work.
- Read lab assignment directions and supplemental instructions if necessary - refer to the Lab links.
- Printouts of lab manual pages.
- A stapler or a folder to organize lab submissions.
You have three hours to complete each lab and turn in the necessary files and printouts. It is important to read the assignment and think through the problems before attending the lab.
Ask questions as soon as you run into problems - don't waste time.
Failure to attend a lab session without a VALID excuse (I must be notified in advance) will result in 0 points for the lab assignment.
Lab Grading
Grading is based on correctness (programs and answers), following instructions (turning in lab questions and source code printouts, stapled and in order), and submitting an electronic drop of code and executable. I will not grade a lab I can not run.
Individual lab points are awarded as follows:
Documentation - name must be in comments |
10% |
Style - indentation, mnemonic names, etc. | 10% |
Logic - clean, reachable statements, efficient |
20% |
Compiles | 50% |
Output format - readable and correct |
10% |
Bonus points are awarded for exceptional designs that still adhere to the lab requirements. Examples include; nice organization, well documented code, a clever/efficient solution, an elegant user interface, etc.
Finally, you can not pass this course without a reasonable effort on the labs.
Late Work
Late work is not accepted unless negotiated with the
instructor - a valid excuse and 24 hour prior notification are
required.
Can't make an exam - a valid excuse and 24 hour prior
notification are required.
Academic Integrity and Professional Conduct
I am committed to respecting all students including their
ideas, creativity and opinions. I am committed to grading
assignments quickly and fairly and being available for help via
e-mail and office hours. In turn, I ask for your respect -
assignments must be completed by the due date, you must attend
class and be on time, complete the reading assignment by the due
date, stay awake in class, not surf the web or read email during
lecture, turn off mobile devices, ask questions, participate in
discussions, treat all class members with respect - that is,
standard "professional" conduct for a classroom setting.
Failure to follow the rules for classroom conduct will result in
a loss of class participation points.
Labs, homeworks, projects, and exams are autonomous endeavors
that may not be shared in any form; verbal, written or
electronic (you must remove your work from lab machines).
You are required to read the following statement;
Each student should read and become thoroughly familiar
with the code of academic responsibility as described in the
student handbook. The following paragraph partially describes
the implications of that code as it applies in this course.
It will be the student's obligation to complete each written or programming assignment and to submit all requested material by the specified due date. Materials submitted must represent the student's own work exclusively. No cooperative effort among students is acceptable except in the case of group projects. The only acceptable source of outside assistance is the course instructor and the Lab TA.
The student is responsible for actively denying others access to her/his security passwords and to work submitted for grading in all written, printed, verbal, and machine forms. In addition to more obvious requirements, this responsibility includes the obligation to remove all private files from the hard disks on College computers and to ensure that source listings are not available in public waste areas where other students might access them.
Students who violate the above restrictions will be liable to grade reduction that might extend to the assignment of a failing grade for the course. The instructor will report violations to the Dean of Students office for insertion into the student's file and might alter the penalty assessed to the student in response to information already available in that file.
Course Goals and Learning Objectives
1) Communication: Students should be able to effectively
communicate their ideas in written, oral and electronic form.
Success in achieving this goal will be assessed by your ability
to:
a) Effectively debate an
ethical position for a case study. [Application]
b) Use formal documentation
style appropriate to this course level. [Knowledge, Application]
c) Write a journal article
review and use proper citations. [Knowledge, Synthesis]
d) Write a functionally
complete testing oracle. [Knowledge, Application]
e) Write a reflection on a
team programming experience. [Synthesis]
2) Collaboration: Students should be able to work
collaboratively in a team environment.
Success
in achieving this goal will be assessed by your ability to:
a) Work effectively in a team to develop
a test suite or software project. [Application]
3) Synthesis and Application: Students should be able to
critically apply concepts, theories and practices to the
creative solution of complex computing problems.
Success
in achieving this goal will be assessed by your ability to:
a) Analyze and critique problems whose
solutions require data aggregates.[Synthesis]
b) Design and implement efficient algorithms
using data aggregation. [Application]
c) Design abstract data types for the standard
data structures. [Application]
d) Understand the principles of class design.
[Knowledge]
e) Apply 1 - 4 to [Application]
i. Implement the standard abstract data
types and use them in problem solving.
ii. Understand the trade-off between
different algorithm/data structure pairings.
iii. Begin to understand how to perform
efficiency analysis of algorithms.
iv. Design class hierarchies using
encapsulation, composition and inheritance.
4) Software Methods: Students should be able to define, plan,
implement and test a medium-sized software project using an
appropriate software engineering process.
Success in achieving this goal will be assessed by your ability
to:
a) Understand the use of automated design and
testing tools. [Knowledge, Application]
b) Design, code, test, and debug a programming
solution for this course level. [Application
c) Complete programming assignments according
to formal specification requirements. [Application]
d) Formulate and test a solution for a team
project. [Application]
e) Use a formal design tool, such as UML, to
specify class structure. [Application]
f) Describe the imperative (CS110) and
Object-Oriented (CS120) programming paradigms and their
appropriateness for solving specific problems. [Synthesis]
g) Use version control tools for software
development projects. [Application]
5) Professional Responsibilities: Students should have an
awareness of the wide range of social concerns influenced by the
discipline.
Success in achieving this goal will be assessed by your ability
to:
a) Develop a deeper understanding of the
rules of conduct for a computer scientist as formulated in a
Professional Code of Ethical Conduct. [Knowledge]
b) Analyze a computer ethics case study.
[Synthesis]
c) Understand the ethical responsibility
to test problem solution correctness. [Knowledge]
d)
Understand the importance of collaborative
tools for maintenance and modification of software. [Knowledge]
Title IX
The College of Wooster and its faculty are committed to
ensuring a safe and productive educational environment for all
students. In order to meet this commitment and to comply with
Title IX of the Education Amendments of 1972 and guidance from
the Office for Civil Rights, the College has developed policies
and procedures which prohibit discrimination, sexual
harassment/misconduct, and retaliation. Any member of the
College community (faculty, staff, students, visitors, and third
party vendors) who believes that they have been a victim of
sexual harassment/misconduct, domestic violence, dating
violence, bullying, cyber-bullying, stalking and/or gender-based
discrimination is encouraged to file a report with the College's
Title IX Coordinator (Lori Makin-Byrd – lmakin-byrd@wooster.edu;
330-263-2017). Reports can be filed in person, via email, or
online at http://wooster.edu/offices/discrimination/sexual/.
In order to ensure student safety and address the well-being of
students, the College requires all employees, including faculty
members, to report incidents of sexual and gender-based violence
shared with them by students to the College's Title IX
Coordinator. Exceptions are situations where students are
unlikely to expect that a disclosure would trigger a reporting
obligation such as in a class writing assignment. A faculty
member reporting to the Title IX Coordinator does NOT mean that
the student will be obligated to participate in any formal
proceedings; that decision remains at the discretion of the
student unless the information indicates that one or more
students are at risk of further harassment. Information
regarding the College's non-discrimination policy (including
bias-related harassment), sexual assault/sexual misconduct,
Title IX, and filing a report can be found at http://wooster.edu/offices/discrimination/.
Learning Disability
Students with learning disabilities may be allowed accommodations, such as extra time on exams. If you have a learning disability, you should contact the Learning Center at the start of the semester so that you, the Learning Center, and I can discuss reasonable accommodations. I'm not obligated to provide accommodations unless you do so.