Held: Friday, 26 August 2005
Summary:
We begin the course by visiting the central topic matter
of the course and the design of the course.
Related Pages:
Overview:
- About the course.
- Some basic administrative issues.
- An introduction to data structures and algorithms.
- CS152 is primarily a course in Abstract Data Types and
Algorithms. At some institutions, it has that name.
- Traditionally, courses like this have focused on data structures
and algorithms.
- A data structure is a formalism for organizing and managing
data. Often, the way you organize the information in your program
permits or inhibits particular operations. Different structures
may also lead to different costs (in time or space).
- An abstract data type is a more general formalism for organizing data.
- An algorithm expresses the steps involved in completing
a task.
- CS152 is also a course in imperative and
object-oriented programming.
- Presumably, you've seen a little bit of each in CS151 (or whatever
course you've taken previously). We will certainly talk more about
both paradigms.
- We will be doing our programming in Java. In the
past, I've said that
the language we use is less important than the concepts we learn.
However, I must emphasize that you will not learn the concepts
unless you also learn Java.
- Like most computer science courses, CS152 will have both theoretical
and practical components. I hope you will enjoy relating the two.
- This semester, we'll talk about data structures and
abstract data types. Some computer scientists treat
them as equivalent terms. I consider them different, although, on
occasion, I use them interchangably.
- An abstract data type (ADT) is a collection of values and
operations on those values. ADTs specify the what of data.
- A data structure is a structure designed to organize data.
Data structurs specify the how of ADTs.
- When we distinguish the two, we sometimes say that data structures
implement abstract data types.
- Those of you coming from the Scheme-based 151 may already be familiar
with two basic ADTs: the list and the vector.
- Both lists and vectors gather data into a sequence.
- More importantly, they provide facilities for manipulating the
sequence.
- You can extract an element from the sequence.
- You can change an element in the sequence.
- (Sometimes) you can insert or remove an element from the
sequence.
- Vectors and lists differ in the operations they provide and the
costs associated with each operation.
- Note that their are typically four issues (the "PAMI") we will consider when
we work with ADTs:
- Their philosophy: What grounds the design of this ADT or structure (sometimes this speaks to expected efficiency)?
- Their applications: How do we expect to use members of this type?
- Their methods: What funtionality do the structures provide?
- Their implementation: How can we build these things?
- Similarly, there are three issues we will consider when we work with data structures:
- Their strategy: the central idea in the implementation;
- Their implementation: how they do what they do; and
- Their efficiency: how fast they are (or with how much memory they consume).
- Note that we want a clear barrier between specification and implementation,
so that a client of one of your data structures need only know
what you do and not how you do it. We often call this separation
encapsulation or information hiding.
- This term, we will be looking at each of these aspects of a number of
the key ADTs in CS.
- Please refer to the course web site
for details.
- Teaching philosophy: I support your learning
- Policies
- Attendance: I expect you to attend every class. Let me know
when you'll miss class and why.
- Grading: I'm a hard grader. I don't grade everything.
- Course web
- Etc.
- The exams
- Three take-home exams during the semester. Plan to spend
ten hours on each one.
- An optional final to make up for a bad exam grade.
- In-class coding discussions
- This semester, I plan to give daily short assignments and then ask someone to present his or her solution to the class for discussion. You will not be warned in advance as to who will present.