CS2852
Data Structures

This is an old version of this course, from Spring 2014. A newer version is avaliable here.

code
In-class code
slides
Power-point slides
checklist
All checklists and feedback on Exams, HW, and Labs

We will learn how to put together classes, references, and arrays (and few new tools) into bigger, better structures. These data structures will allow us to quickly search and store data. What fun is data unless you can play with it? We will learn new algorithms for exploring and changing these structures, and new time complexity anlaysis techniques that allow us to predict how fast we can run a program.

Catalog Description

This course covers the organization of data and the algorithms that act upon them. The topics of arrays, linked lists, stacks, queues, trees, sets and hash tables are introduced. Fundamentals of algorithm performance are also introduced, with an emphasis placed on time complexity analysis. Laboratory activities include implementation of data structures as well as the application of data structures from standard libraries. (prereq: SE 1021) (3-2-4 (hover for explanation)) (full catalog)

Outcomes

On successful completion of this course, the student will:

  • understand and apply complex data structures and algorithms.
  • use appropriate algorithms (and associated data structures) to solve problems.
  • have a thorough understanding of commonly used library data structures.
  • be able to analyze the time complexity of algorithms.
  • understand the use of recursion in problem solving.
  • be able to use data structures in software design and implementation.
  • be able to apply standard library data structures in software design.
  • be able to select appropriate data structures for a given application.

(Acknowlegement: These outcomes come from Dr. Chris Taylor's site, and are the official catalog outcomes for this course)

Strengthening Your Foundation

We will be building much on the foundational concepts you learned in SE1011 and SE1021 (Fig. 1). You may want to start the quarter early by reviewing the material from those courses.

Fig 1. Building on the foundations of SE1011 and SE1021. If you feel like something is missing from those quarters,
don't try to build on thin air! Dig down and lay a good foundation!

If your foundation feels like the one on the left, don't despair! During the quarter, as you work through homework, labs, and practice exams, you can strengthen your foundation by asking & and answering questions about SE1011 and SE1021 that relate to what you are doing.

Start by asking a good question. Then go to the resource below for an answer.

Learning Resources

Me

My goal is to spend my and our time in the way that best helps you learn. If you feel I can help you learn by changing course policies or instructor decisions, please let me know. For example, if you think giving a 10% bonus on the lab is really assigning the lab two days earlier, you might say, "Hey, Dr. Yoder, I don't feel like turning in the labs early helps me to learn the material better, and the industry-simulation is not realistic enough for my tastes. Could you drop that policy for future labs?" I will do my best to improve learning based on such suggestions.

I enjoy talking with you. If you haven't come by for office hours in a while, give it a try! Those who do not only learn themselves, they explore with me ways to help everyone learn better.

Instructor
Josiah Yoder
lıɐɯə
npǝ˙ǝosɯ@ɹəpoʎ
Office
L344 (Library, 3rd floor)
Hours
See schedule below.
Phone
ƖƐ96 ㄣㄣㄣ ϛ9ㄥ Call anytime. Rings office, cell, and computer at same time.

No appointments are necessary for the Office Hours on the schedule below. Feel free to request an appointment at any time Monday-Friday or just swing by.

Schedule updated Week 1, Tuesday (11 Mar 2014)
Time Mon Tue Wed Thu Fri
7:00 Class prep Grading Class prep Class prep Class prep
8:00 CS2852
S210
CS2852
S210
CS2852
S210
CS2852
CC210
9:00 Office
Hour
Office
Hour
Office
Hour
10:00   Class prep Grading Office
Hour
11:00 Class prep   Web Inf.
Meeting
 
12:00 Lunch Lunch Lunch Lunch Lunch
1:00 Dept Mtg Class prep CS2852
Planning
Grading Class prep
2:00 SE3910
L307
SE3910
S343
SE3910
L307
SE3910
L307
3:00   Office
Hour
 
4:00  

The Book

I may use both this quarter's text, and references to our text from the last two quarters (in se1011 and se1021). Unless specified, references are to the required text (Koffman & Wolfgang).

Required
Data Structures, 2E, by Koffman and Wolfgang, Wiley
SE10X1
Introduction to Programming with Java: A Problem Solving Approach, 2nd Ed., by Dean and Dean, McGraw-Hill, 2014, ISBN: 978-0-07-337606-6

This website

These pages are available from the right menu. They contain:

  • Overview
    • This page
  • Schedule
  • Outcomes
    • Exam study guide: Detailed list of things you will be able to do, categorized by week and topic
    • Tips for using Software (e.g. IntelliJ and EA)
  • Homework
    • The first homework is already available!
  • code
    • Day-by-day coding examples
  • slides
    • Day-by-day lecture slides

Learning tools

We will use a variety of learning tools this quarter. Your primary learning tools will be:

  • Doing & reviewing Homework
  • Participating in class and reviewing your own lecture notes, slides, and code.
  • Doing & reviewing Labs
  • Organizing your notes & writing a summary note-sheet

Class

I don't mind if you have to skip a class. But class attendence is essential so you can learn what material I expect you to know, what HW and quizzes there will be, etc. Please ask what you missed if you do skip class, and I'll provide you with material that you may not find on the web.

In class, I expect you to be working only on class material. Please resist the temptation to check your email or browse facebook.

Please particpate in all class activities. Even if the assignment is obvious to you, you can learn more by seeing how your classmates think about it and explaining your own views.

Please take your own notes from lecture and do not rely solely on the slides. Many important concepts do not make there way into the online notes & code. Please bring blank paper for in-class activities and your own notes. You can also follow along in IntelliJ if that helps you.

I want you to make the decision as to whether to drop the class, with the help of your academic advisor. So if you stop coming class, I will give you whatevr grade you have at the end of the quarter, even if it is an F.

Homework

Homework is your primary opportunity to dig deeper in the theory of programming. In addition to the required homework problems, you may want to ask and answer your own questions. Perhaps things like:

  • Why does this compiler error occur?
  • Is it possible to _____?
  • Can I combine _____ and ____ into a single program?
  • Why?

If you come up with a great question, but can't find an answer, ask me! Perhaps I can find it.

To keep HW aligned with class and encourage good note-taking, I will make the official HW assignments in class instead of on the web. To give you time to ask questions about the HW, I will assign it at least two class-days before it is due.

I will grade HW as Satisfactory (S) or Unsatisfactory (U). If you have a specific question about whether you did something right in the HW, please ask me.

Labs

We are still learning essential programming tools, and labs are again individual this quarter.

Because working in lab is one of your best opportunities to interact with me and other students, lab participation is worth 20% of the lab's grade. Of this 20%, 5 to 15% of the participation grade may be assigned to "in-lab completion."

Untested code is buggy. I find that if your code doesn't compile or hardly runs, that there are many other errors in it. You can only get partial credit for a lab if it compiles and runs. If it does not compile & run, please fix the lab and submit it later, or drop a feature or two to get it running again (often the best option).

Turning in assignments

To help you keep on track with homework and to avoid the temptation to work on HW or labs in class, assignments are due at the beginning of class. An assignment received after the initial call and before the next assignment is due can still receive up to 90% of the credit. Please make arrangements with me if you do not feel that you can complete an assignment by the week following. It takes a great deal of work to catch up from this point and I want to help.

At the end of the quarter, all assignments must be turned in by 4:30pm on Friday so that we can wrap things up and I can turn the grades in on time.

Many labs will be turned in electronically. These are due at 11pm, with a 1 hour grace period. Labs turned in after midnight and before the next lab is due can still receive 90% of the credit. Again, please contact me at least a day before the following lab's deadline if you think you may need more time to catch up.

To help keep things organized, please staple all assignments, and include your name, date, and the assignment name on all assignments, even uploaded PDF's. Also, please only submit a lab once. Multiple submissions are hard for me to keep track of, especially if I've already started to grade the first one.

Please start early and ask me for help if you get stuck.

Learning Assessment

We will use the following mix of metrics to measure your learning:

Lab projects 25%
Homework 5%
Quizzes 10%
Exam I 20%
Exam II 20%
Final Exam 20%
Total 100%

To ensure that you have a proper foundation for later courses, you must have a passing average on the exams to pass the course (Added Week 1 Tuesday (11 Mar 2014))

I sometimes make mistakes in tallying points. If you become aware of an error in grading, please send me an email, and I will fix it and reply by email.

Discussing things in person is a great way to start to resolve an issue. Please send me the email, too to help me keep track of things.

Please maintain your own records of your grades and check them against whatever summaries I send to you, and let me know if I'm missing an assigment that you've turned in, etc.

Quizzes & Exams

Quizzes will be announced in class at least one day in advance. They will usually be on Lab day.

Because of the difficulty of preparing fair and accurate tests, you cannot retake a quiz or exam if you miss it or do worse than you hoped. I will drop your lowest quiz score, so one 0 should not be a problem. If you need to skip an exam, you should schedule a make-up exam before the missed exam. I don't always give make-up exams, even if students ask in advance. Please don't schedule airline tickets on a class day!

Grade Scale

I use the official MSOE grading scale:

≥93% ≥89% ≥85% ≥81% ≥77% ≥74% ≥70% <70%
A AB B BC C CD D F

In final grading, I may award a grade higher than the grade scale if I feel it is more accurate than what the "raw numbers" produce

Integrity

Your integrity is your most valuable academic possession, significantly more valuable than passing a class getting a high GPA.

Integrity is essentially honesty -- ensuring that everything that it appears you have done or know is true.

It is possible to accidentally give the impression that work is yours, or to accidentally see something on someone else's exam. If something like this happens to you, please let me know. And generally speaking, please do your best to avoid this. Be on the watch! We people are very good at fooling ourselves; we can even not "know" that we are cheating when we are!

Because of the importance of maintaining academic integrity, I will report apparent academic dishonesty to the Vice President of Academic Affairs. If this occurs, you will get a copy of the report.