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


Instructor

Course TA and Grader


Locations / Times


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:

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.