Data Structures - 810:052

Fall 2009

 

Instructor Information

Dr. Ben Schafer
schafer@cs.uni.edu
273-2187
ITTC 316


Office Hours (my schedule)

General Course Information

Time and Place:  

This class is worth 4 credits based on 3 credits for the lecture portion and 1 credit for the programming assignments and the lab work.  You are required to attend both components.

Text
Fundamentals of Python, by Kenneth Lambert (ISBN 978-1-4239-0218-8)

Course Description
This course investigates abstract data types (ADTs), recursion, algorithms for searching and sorting, and basic algorithm analysis. ADTs to be covered include lists, stacks, queues, priority queues, trees, sets, and dictionaries. The emphasis is on the trade-offs associated with implementing alternative data structures for these ADTs.

A student who successfully completes this course should have a basic understanding of algorithms and data structures such that the student:

Computing Environment

Class Directory

http://www.cs.uni.edu/~schafer/courses/052/  

Most course materials will be made available on the course web page during the semester. You are responsible for checking this site frequently for reading assignments, prep activities, lecture notes, announcements and supplemental class materials.

Class Mailing List

810-052-01-FALL@uni.edu .   

I frequently send e-mail to inform you of breaking news and to answer common questions.  Furthermore, I encourage you to use this mailing list to ask questions of me and/or your fellow students.  By default, mail to this list will go to your @uni.edu address and mail sent by you to this list will be rejected unless it comes from that address.  Talk to me if this is a problem.  You are responsible for checking your email to be aware of announcements.

Computer Access

We will be using Windows as our primary operating system this semester. You will do your lab exercises and programming assignments using IDLE, the default editor distributed with Python.  You have two choices for access to Python and IDLE.

  1. By signing up for this class you will be provided Windows access on the CNS computing network.  While there are multiple places where you can log on and use this account, there are three of primary interest.
  2.  

  3. I realize that many of you have access to machines at "home".  You may work from home and you may use any OS of your choice including a Mac or linux. Python and IDLE are easily downloaded from www.python.org.  You should download version 2.5 (what is in the labs) or 2.6 (a slightly more "up to date" version) and NOT version 3.x. 

Whether you work in the labs or from home, you will need to have internet access to submit your assignments.

Course Structure and Grading Policies

The final letter grade you earn in this course will be based on points accumulated over five activities as described below.  The following approximate point system will be used in calculating final grades.  Please note that I reserve the right to modify these points based on the number of class sessions and lab assignments.

Activity

Estimated
Number

Estimated
Score
Attendance and Participation 45 100
In-lab work (Tuesdays) 13 130
Programming Assignments

10

250

Quizzes 10 100
Midterm exams 3 300

Final exam

1

150

Grading for this course is on an absolute scale.  I do not "curve" in the traditional sense. Thus, the performance of others in the class will not negatively affect your grade.  Final grades will be assigned based on cut off points no “higher” than:

There are exceptions to this:

**** It is worth pointing out that departmental policy requires that you receive a grade of C or better in this course prior to enrolling in Intermediate Computing (810:053) and most 100 level courses in the department.

 

Class Attendance and Participation

Socrates reportedly said that the best learning takes place on a log, with the teacher on one end and the student on the other.  In other words, learning is most effective if it is an interactive process.  To be interactive, we must have two things - attendance and participation. 

Although I will often use the terms "lab" and "lecture," this course will rely less on the "lecture" you may be used to, and more on an open discussion between instructors and students.  Regular class sessions will be aided significantly by your participation in discussions, as well as your willingness to ask questions and share your experiences with your classmates.  To encourage this, I will take attendance, and I will try to evaluate how much effort you seem to be putting into participating in the process. 

To encourage attendance I will begin each day by taking attendance.  Right off the bat, you can earn 2 points :

On top of that, you will be assigned points based on your participation in the whole-class "lecture" and various small group activities.  These points will be assigned as :

This means you can have a score anywhere from 0 to 4 each day.

At the end of the semester, you will be assigned an overall "attendance and participation" grade based on the total number of points you have earned.  The formula for this is based on the idea that perfect attendance with "some participation" each day (averaging 3 points per day for each day of the semester) should earn you 100% of the points in this category.

It is always worth pointing out that you can participate too much.  Remember that I am trying to have dynamic interaction with a whole class room full of students at the same time.  Students who participate too much cheat other students of a chance to participate.  Please feel comfortable participating, but also be aware of how doing so affects the class as a whole.

In-lab work

Lab is designed to be a time to allow you to learn new skills, apply and practices existing skills, and prepare yourself for the upcoming lectures and programming assignment.  Points for these activities will be assigned based on level of difficulty for each activity and will be awarded for successful completion.  If you are unable to complete each of the activities in-lab, you will be allowed to complete them on your own. However, you must complete and submit the lab sheet by the start of the next class period (normally Wednesday) following each lab unless announced otherwise.

Attendance to lab sessions is required - you will receive credit only for labs you attend.  The activities for lab are designed to encourage interaction between students and instructors (either me or the TAs) and sometimes between students themselves.  Failure to be in lab robs you of some of the learning objectives for that lab.  I expect you to be in lab, on time, and prepared to work.  Students who arrive late will be docked points regardless of the quality of their lab work.  In general, students who do not show up at all will not receive credit for making up the lab  (although you should still complete the activities so you do not fall behind). 

Having said that, I DO realize that occasionally things come up.  For this reason, students will get a one time "free pass" to accommodate for illness, car trouble, etc.  You will be allowed to make up one lab activity for full credit, no questions asked.

Programming Assignments

Programming assignments are designed to take what you have learned in-lab and during lecture, and apply these skills to a program on a scale larger than that explored in-lab.  Programming assignments will typically be assigned over a time period of one week.  The complexity of these assignments will vary , and some may count for more credit than others. 

It is expected that you will complete all assignments as an individual unless otherwise instructed (see section on scholastic conduct).  If you have questions concerning an assignment, feel free to consult your instructor or a TA.  In fact, if you spend more than 15 minutes staring at the book or computer trying to figure out what to do next, ask for help!  I don't know what you are thinking if you don't tell me. Therefore, take advantage of the fact that I am willing to help you.  However, plan your time wisely.  Do not wait until the last minute or help may not be available.

The grading of programming assignments will be based on the quality of your code as well as your adherence to general and assignment specific directions.  A grading rubric will often be announced with each programming assignment.  For more information, see the Programming Assignment Collection Policy.

There will be assignments due during the last week of regular classes.

Quizzes and Exams

At the completion of each main chapter (chapters 11-20) you will take a brief, in-class quiz.  Each quiz will be announced one lecture prior to it's offering.  The format of the questions on each quiz will vary depending on the material in the chapter.  The length of each quiz will also vary depending on the specific questions on the quiz, however, each quiz will be scaled to be worth 10 points.  Each quiz will use approximately 10 minutes of class time. 

There are a total of four exams this semester. 

 

These exams are generally closed-book exams.  Under certain circumstances I may allow you bring in a reference sheet of code.  Specific instructions regarding what will and will not be allowed for each exam will be published to the course website prior to each exam, and will be clearly indicated in the instructions for each exam.  It is your responsibility to be aware of what is and is not allowed on a given exam.

The dates of these exams are listed on the class schedule.   You are expected to be present for these exams  unless you have made prior arrangements.  Make-up exams will be offered under very limited circumstances.  If you are aware of conflicts prior to the exam, please bring these to my attention as early as possible.

Final Thoughts on Grading

I try to accommodate student needs whenever possible, but I can only do so if I know about them. If you ever have to make alternate arrangements for a class session, an assignment, or an exam, contact me in advance. The safest way to make such arrangements is by notifying me via e-mail or phone of your circumstances and of how you can be reached. 

All assignments are due at their assigned date and time. In order to receive partial credit, always submit your best effort at that time. Late work may not be accepted for a grade.

Incompletes

Incompletes are awarded only in very rare instances when an unforeseeable event causes a student who has completed all the coursework to date to be unable to complete a small portion of the work in the last week or two of the semester (typically the final project or exam). Incompletes will not be awarded for foreseeable events including a heavy course load or a poorer-than-expected performance. Verifiable documentation must be provided for the incomplete to be granted, and arrangements for the incomplete should be made as soon as such an unforeseeable event is apparent.

Scholastic Conduct

You are responsible for being familiar with the University’s Academic Ethics Policies (http://www.uni.edu/pres/policies/301.shtml).

It would be easy if I could just state "copying and collaboration is wrong"  But, in fact, that statement is partially inaccurate in a programming environment.  There will be many times this semester when I will explicitly ask you to copy some starter code, and there are times when you may (and even should) discuss code with other students.  In other words, under certain circumstances, copy and collaboration is not only ok, it is expected.

General guidelines regarding "copying"

General guidelines regarding collaboration

In addition to the activities we can all agree are cheating (plagiarism, bringing unauthorized notes to a closed book exam, etc), assisting or collaborating on cheating is cheating (providing answers to exam questions, discussing test questions with a student who hasn't taken the exam yet).  Cheating can result in failing the course and/or more severe disciplinary actions.

Remember: Discussing assignments is good. Copying code or answers is not. 

Class Distractions

We live in a technological society, and many of you now carry a variety of electronic distractions with you.  These include cell phones, laptops, PDAs, MP3 players, etc.  While you are welcome to own and use these, and other, electronic devices, their use in the classroom is forbidden without my explicit permission (In fact, this is now a University-wide policy).

A few exceptions do exist, and I reserve the right to approve these situations on a case-by-case basis with prior notification  For example, due to a family emergency it may be necessary to have your cell phone turned on.

Unless we have discussed it in advance, all electronic devices should be turned off and left out of sight during class time.  The inappropriate use of any of these devices will cause you to receive a participation grade of negative one point regardless of your participation otherwise.  Multiple infractions may cause more extreme consequences, including removal from the course.

Accessibility

In compliance with the University of Northern Iowa policy and equal access laws, I am available to discuss appropriate academic accommodations that may be required for students with disabilities. Requests for academic accommodations are to be made during the first three weeks of the semester, except for unusual circumstances, so arrangements can be made. Students should register with Student Disability Services, 103 Student Health Center, to verify their eligibility for appropriate accommodations.

Guidelines for Success in this Course

Once you have allocated the necessary time for this course, the following suggestions, compiled from student experiences, should help you plan your time use and prepare for the labs and exams:

Finally, I encourage you to utilize the Academic Learning Center's free assistance with writing, math, reading, and learning strategies.  UNI’s Academic Learning Center is located in 008 ITTC.  Visit the website at http://www.uni.edu/unialc/ or phone 319-273-2361 for more information.