Overview
Welcome to CSC 223: Data Structures and Analysis of Algorithms! Since we made the jump from 1975 forward to 2025 about a month ago there will be a lot of continuity in our study as we move to this new course.
Friday, February 7th
Classwork
Today we will learn how to use class templates in C++ and discuss how they can be used to implement generic data structures such as the linked list that we have been studying.
Homework
I asked Python to choose groups, and it gave me back the following:
- Akshay, Luis, Adonis, and Parker
- Johan, Anfal, Anar and Cody
- Jamethiel, Ved, Trostin and Marin
- Turner, Issac and Caleb
We will divide up the exercises in Chapter 17 Exercise Set 1: Templates among these groups.
Wednesday, February 5th
Classwork
The grade distribution for this first assignment in CSC 223 was
A: 10, C: 1, D: 2, and E: 2. That means that 2/3
of the class was on point
, and 1/3, to varying degrees, was not. Not
a terrible result, but I'm convinced we can do better.
We have a short class today, so we will use it to:
-
Properly set up your git repos so that:
- they have a
.gitignore
file that excludes unwanted digital artifacts from creeping into your repo. - unwanted digital artifacts that already have crept into your
repos (
.vscode
subdirectories,.DS_Store
subdirectories,build
subdirectories, etc.) are removed, never to return. Note: after today, the presence of such unwanted artifacts will result in a letter grade reduction on repo evaluations.
- they have a
-
Help those of you who do not have your
LinkedList
files arranged properly to get them so arranged. - Introduce class templates and finish Chapter 17: Linked lists, if time allows.
Homework
Complete the new exercises just added to Chapter 17 Exercise Set 0: Chapter Review.
Monday, February 3rd
Classwork
At the beginning of class you should create a new git repo for this class named
csc223
on your favorit git host and email me a link. Please
confirm that the link on the students page
(Jose's already does ;-) from your name works before you leave class today.
We will then have a discussion of the following:
First Definitions
- Efficient Program
- An efficient program is one that executes in the minimum time using the minimum memory space.
- Data Structure
- A data structure is a collection of data elements grouped under one name that are organized and stored so they can be used efficiently.
- Abstract Data Type (ADT)
- An abstract data type (ADT) consists of a set of data values and the associated operations which can be performed on them precisely specified independent of any particular implementation.
- Algorithm
- An algorithm is a finite sequence of instructions used to solve a class of specific problems or to perform a computation.
Steps for Choosing a Data Structure
- Analyze the problem to determine the operations on the data that must be supported.
- Quantify the resource constraints for each of these operations.
- Select the data structure that provides the required operations within the resource constraints as efficiently as possible.
The we will then look through Chapter 17: Linked lists in our textbook together and discuss the things you should pay particular attention to as you read through it on your own during your homework.
Homework
Use TDD to complete all the test cases in Chapter 17 Exercise Set 0: Chapter Review, reading (and rereading the chapter as you do, with the aim of truly understanding what you read.
This assignment is due at 11:59 pm on Tuesday, February 4th.