COSC 350 - Spring 2021

Course Information

  • Instructor: Dr. Aaron Garrett (garrettal@wofford.edu)
  • Class Meeting (DB 101): MWF 10:30a-11:20a
  • Office Hours (Zoom): MTW 3:00p-4:00p; or by appointment
  • Textbook: None, but LearnCPP is one of many free resources available online
  • Required Software Mimir Classroom (available in bookstore)
  • Final Exam: See the Registrar’s page

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 200
Projects 400
Midterm Exam 200
Final Exam 200
Total 1000

Note that the final exam is comprehensive and very applied. Success on it requires that students have practiced throughout the term, and completing the assignments and projects are the best way to practice. If the score on the final exam is greater than the score on the midterm exam, the final exam score will be used in place of the midterm exam for final grade calculations.

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. That includes having completed assigned readings, problem sets, and tutorials.

You are expected to dedicate your attention to what is going on in class and to participate fully in classroom activities, including discussions. No laptops or tablets are to be used in class unless being used for a classroom exercise. (Notes may be taken using a device if needed as an approved accommodation.)

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

Generally, assignments are due on Wednesdays and projects are due on Fridays.

This YouTube series might be helpful for basic C++ language understanding. And this YouTube series focuses on data structures. Both have individual videos linked below.

Meeting Topics LearnCPP YouTube In-class Lab Graded
Jan 4 C++, Compilation Chapter 0 https://youtu.be/3tIqpEmWMLI; https://youtu.be/H4s55GgAg0I H00 L01
6 Data Types, Variables, Arithmetic Chapter 1 and 4 https://youtu.be/zB9RI8_wExo H01 L02 A00
8 Conditionals, Loops Chapter C https://youtu.be/qEgCT87KOfc; https://youtu.be/_1AwR-un4Hk Q01 L03
11 Standard and File I/O Chapter 18 https://youtu.be/ruf_pj2hGpw; https://youtu.be/XJhIJ6J5obY H02 L04
13 Functions Chapter 2 https://youtu.be/V9zuox47zr0 H03 L05 A01
15 Parameter Passing Chapter 7 https://youtu.be/IzoFn3dfsPA; https://youtu.be/3cm0VckC8q0 Q02 L06
MLK Holiday 18 Strings, Enumerations Chapter S https://youtu.be/x55jfOd5PEE; https://youtu.be/ijIxcB9qjaU L07
20 H05 A02
22 Arrays Chapter 6 https://youtu.be/Hw42GkHPyvk; https://youtu.be/ENDaJi08jCU; https://youtu.be/gNgUMA_Ur0U Q03 L08 P01
25 Searching, Sorting H06 L09
27 Structures Chapter S https://youtu.be/fLgTtaqqJp0 H07 L10 A03
29 Classes Chapter 8 https://youtu.be/2BP8NhxjrO0; https://youtu.be/Ks97R1knQDY Q04 L11
Feb 1 Classes #2 Chapter 8 https://youtu.be/3dHBFBw13E0 H08 L12
3 Memory Management https://youtu.be/wJ1L2nSIV1s H09 L13 A04
5 Dynamic Arrays Chapter 6 https://youtu.be/DTxHyVn0ODg; https://youtu.be/NUZdUSqsCs4; https://youtu.be/FXhALMsHwEY; https://youtu.be/D8cWquReFqw Q05 L14
8 Classes with Dynamic Memory Chapter 8, 9 https://youtu.be/FXhALMsHwEY; https://youtu.be/D8cWquReFqw H10 L15
10 A05
12 Midterm Review https://youtu.be/Z_hPJ_EhceI; https://youtu.be/BvR1Pgzzr38; https://youtu.be/BvR1Pgzzr38; https://youtu.be/BvR1Pgzzr38; https://youtu.be/PocJ5jXv8No P02
15 Midterm Exam
17 Midterm Exam
19 Midterm Recap
22 Algorithm Analysis https://www.youtube.com/playlist?list=PL8671F220EC32A00E H11 L16
24 Recursion Chapter 7 https://youtu.be/kS_gr2_-ws8; https://youtu.be/v4cd1O4zkGw H12 L17
26 Sorting Revisited https://youtu.be/KEEKn7Me-ms; https://youtu.be/oKndim5-G94 Q06 L18
Mar 1 Linked Lists https://www.youtube.com/playlist?list=PL2_aWCzGMAwKedT2KfDMB9YA5DgASZb3U H13 L19
3 ADTs https://youtu.be/92S4zgXN17o H14 L20 A06
5 List ADT (unordered) https://youtu.be/NobHlGUjV3g; https://youtu.be/vcQIFT79_50 Q07 L21
8 List ADT (ordered) H15 L22
10 H16 A07
12 Stack ADT https://youtu.be/F1F2imiOJfk; https://youtu.be/XuCbpw6Bj1U Q08 L23 P03
15 Queue ADT H17 L24
17 tree terminology https://youtu.be/qH6yxkw0u78 H18 L25 A08
19 Binary Search Tree ADT https://youtu.be/pYT9F8_LFTM Q09 L26
22 Heap ADT https://youtu.be/t0Cq6tVNRBA H19 L27
24 Map ADT https://youtu.be/shs0KM3wKv8 H20 L28 A09
26 Graph ADT Q10 L29
29
31 A10
2 Final Exam review P04

Note: This syllabus is subject to change with notice.