COSC 350 - Spring 2018

Course Information

  • Instructor: Dr. Aaron Garrett (garrettal@wofford.edu)
  • Class Meeting (Olin 116): MWF 10:30a-11:20p
  • Office Hours (Olin 204E): MTWR 2:00p-4:30p; or by appointment
  • Textbook: C++ Programming by D. S. Malik
  • Required Software Mimir Classroom (available in bookstore) and CLion (free for students)
  • Final Exam: 16 May 2018 from 9:00a-12:00p

Catalog Description

An introduction to the formal study of data structures, such as arrays, stacks, queues, lists, and trees, along with algorithm design and analysis of efficiency.

Prerequisite: COSC 235 with a minimum grade of C.

Goals

  • Understand abstraction and how it helps to control complexity
  • Understand the concept of an abstract data type (ADT) and how to implement custom ADTs
  • Understand how to use and implement common CS data structures
  • Understand how memory is managed within a C++ program
  • Understand how to use arrays, structures, and pointers to implement ADTs
  • Understand tradeoffs among various implementations for a given interface
  • Understand recursion and be able to use it to solve problems
  • Understand the concepts of algorithmic complexity and “Big O” notation
  • Be able to determine the time complexity of an algorithm
  • Be familiar with commonly used algorithms for interacting with data structures
  • Be able to implement ADTs in C++
  • Be proficient with the C++ programming language

Grades

Your grade in the course will be based on a combination of assignments, projects, and exams.

Assignments
Assignments are short exercises that reinforce the core concepts.
Projects
Projects are more complex problems that require a combination of concepts.
Exams
Exams are timed assessments of conceptual understanding.
Homeworks
Homeworks are ungraded (but recommended) practice with the course material.
Artifact Points
Assignments (~10) 20
Projects (~5) 40
Midterm Exam 20
Final Exam 20
Total 100

The usual grading scale will be applied to the accumulated points: 93–100: A, 90–92: A-, 87–89: B+, 83–86: B, 80–82: B-, 77–79: C+, 73–76: C, 70–72: C-, 60–69: D, 0–59: F.

Policies

Attendance

You are expected to attend class meetings and come to class prepared. Refer to the General Policy Regarding Attendance in the Wofford College Student Handbook. The policy makes you responsible for catching up on missed classes. If you must be absent for class, please email me in advance to let me know.

Make-up exams are not available. If you have a legitimate, excused absence during the midterm exam, then you must make it up during the final exam period.

Assignment Deadlines

Late assignments will not be accepted without a legitimate excuse. All assignments are expected to be submitted by 11:55p ET on the posted deadline.

Academic Integrity

The Honor Code requires faculty, staff, and students to maintain a high standard of individual honor and integrity. While I may specify some assignments as collaborative, work represented as your own must be your own. If you have any doubt about what is appropriate for a given assignment, you should contact me for clarification.

Accommodations

If you have a disability that requires assistance or accommodation, or if you have questions related to any accommodations for testing, note takers, readers, etc., please contact Dean Beth Wallace by telephone at (864) 597-4371 or in person by visiting the Hugh R. Black Infirmary. You must arrange accommodations during the first week of classes.

Tentative Schedule

Meeting Topics Textbook Deadline
05 Feb preprocessor, compiler
07 Feb data types, main function 2, 3
09 Feb control structures 4, 5 A01
12 Feb functions 6
14 Feb functions (parameter passing) 6
16 Feb file I/O 3 A02
19 Feb enumerations, strings 7
21 Feb arrays 8 P01
23 Feb structs 9 A03
26 Feb memory management 12
28 Feb pointers 12
02 Mar pointers 12 A04
05 Mar linked lists 17
07 Mar linked lists 17
09 Mar linked lists 17 A05
12 Mar searching
14 Mar algorithm analysis P02
16 Mar recursion 15
19 Mar sorting
21 Mar Midterm Exam Midterm
23 Mar Midterm Exam Midterm
26 Mar classes 10
28 Mar classes 10
30 Mar classes with dynamic memory 12 A06
09 Apr ADTs 16
11 Apr ADTs 16 P03
13 Apr List ADT (array) A07
16 Apr List ADT (linked)
18 Apr Stack ADT 18
20 Apr Queue ADT 18 A08
23 Apr tree terminology
25 Apr Binary Search Tree ADT P04
27 Apr A09
30 Apr Heap ADT
02 May
04 May Map ADT A10
07 May Graph ADT
09 May P05
11 May Final Exam review

Note: This syllabus is subject to change with notice.