Basic Information

Instructor: TA (030L):
Office: 100 Elkton Rd. Office: 103 Smith Hall
Office hours: Monday 10:30-11:30
Tuesday 3-4
Office hours: Monday 2-3
Tuesday 2-3
Lecture: MWF 3:35-4:25 Lab M 5:00-5:50 (030L)
M 6:00-6:50 (031L)
Purnell 238 Pearson 101D

Textbook(s)

Calendar

Date Topics Assignments
February 7-11
  • course intro
  • C++ basics
  • Readings: Chapter P, mainly P.1, P.3, P.4, some of P.7, P.8, some of P.9
  • We might get to P.5, P.6 later
  • Slides: Monday, Wednesday, Friday
  • survey OUT (due Weds)
  • lab 1 OUT (hello world)
February 14-18
  • streams wrapup
  • random number generation
  • classes - designing, functions, headers, interactions with pointers (4.4)
  • pointers and memory allocation
  • pointers and classes
  • command-line arguments
  • Readings: Look over Section 1.3 for object-oriented basics
  • Slides: Monday, Wednesday, Friday
  • Pointer Handout (by Dan Blanchard)
  • lab 2 OUT
February 21-25
  • command-line arguments
  • linked lists
  • exceptions (briefly noted)
  • operator overloading
  • template functions and classes (3.5, 4.1)
  • basic STL: vector
  • recursion (7.1, 7.2, some of 7.3)
  • Slides: Monday, Wednesday (friend classes, templates), Friday (exceptions, STL, recursion)
  • Operator overloading handout
  • lab 3 OUT
February 28-March 4
  • C++, linked list extra help/review
  • code quality and performance analysis
  • benchmarking
  • hopefully: computational complexity and Big-O notation
  • Slides: Monday (board work only), Wednesday (performance, benchmarking), Friday (lab 3 review, benchmarking)
March 7-11
  • benchmarking wrapup
  • computational complexity, Big O
  • Slides: Monday, Wednesday (board work), Friday
  • lab 5 OUT
  • homework 1 out, due
March 14-18
  • amortized analysis wrapup
  • sorting - basics, selection sort, insertion sort, maybe shell sort
  • Slides: Monday, Wednesday, Friday
  • Readings: Chapter 10.2 (selection sort), Chapter 10.4 (insertion sort), 10.5 (general quadratic sorting notes), 10.6 (shell sort)
  • Code: selection and insertion sorts
  • lab 6 OUT
March 21-25
  • lab 7 OUT (small-ish lab)
March 28-April 1
  • spring break
April 4-8
April 11-15
April 18-22
  • project 1 due Sunday the 17th
April 25-29
  • lab 8 out
May 2-6
May 9-13
May 16
  • Monday: last class (finals review)
  • Saturday (21st) 7-9pm: the final

Course Overview

Course Description

Content
This course will cover data structures and algorithms as part of a transition from pure programming to critical thinking about solving programming problems. Additionally, this course will teach students C++.

Objectives
After successfully completing this course, students should be able to:

Structure
Learning is structured in three areas: lectures, labs, and personal practice/reading. Lectures will cover the theoretical material that you need to know and will evaluate your understanding of the content through exams. Labs will challenge you with programming problems, pushing you to really understand the data structures and algorithms. Personal practice will refine the basic understanding of labs and can transform you from an acceptable or good C++ coder into a masterful coder.

Instructor Information

Biography
I recently received my Ph.D. from UD in Computer and Information Sciences and now I'm teaching a couple courses while applying for jobs. My specialization is natural language processing, which seeks to both understand and generate real text/speech/etc using computer software.

Teaching Philosophy
Generally speaking, university courses should be difficult. They should push you just outside of your comfort zone and challenge you to learn more than you would by yourself.

When I think about running a class, I think of it as leading a team. It's really a cooperative process. If something doesn't make sense, let us know and we can try to work together to figure it out. Your TA and I are here to help you learn. Since there are so many students and we have so much to do, things are formalized, but really I think of it as mentoring with limited time.

TA Philosophy
The TA is there to give out, oversee, and grade labs. He/she will help you if you're stuck, but isn't there to do your work for you. He or she is there as a backup help in case you can't figure it out on your own (checking the assignment, checking the book, etc). Part of the point of this course is to get you to the point where you're a knowledgable, self-sufficient C++ coder, and we can't do that if people don't try to be self-sufficient.

Grading & Policies

Lab

Labs
You'll be given a new lab on Mondays and I'll go over the lab in class. The intention is that many students should be able to finish or nearly finish the lab in one period, but you have about a week of time to work on it before the next lab session. Labs will be due on Sundays by 11:55pm.

The exception is the first lab, which will be due at the end of the first lab period (since it's a simple "remember/learn how to code/compile/execute/script" sort of lab).

Projects
Projects are more involved labs, designed for about two weeks of time instead of one week. Typically the code solves a more interesting problem and will require much more code to solve. A part of each project will involve some competitive work. Each project will have grading weight of 2-3 labs.

Late Policy
Labs/projects are due by 11:55pm on Sundays. Any labs turned in afterwards are late. The late penalty is 10% for the first day, 25% for the second day, and 50% for the third day. After the third day late (at 11:55pm), no late assignments will be accepted; they will be given no credit at all.

Submitting labs and lab grading
Labs/projects will be distributed, submitted, and graded via Sakai. We expect your code to compile and run correctly. In addition, you will also be graded on how clean/readable your code is. For reference, see the style guide or Google's style guide.

Lecture

Speak up if you don't understand something. Typically, I'll give the class many opportunities to do so. Don't worry about asking questions that might seem dumb to you; usually if you don't understand something, there are at least two other people with the same question. It's in everyone's best interest to ask for clarification or extra examples.

Exams
There will be a midterm and final. I'll try to design them so that some of the class can finish in about half a class period.

Attendance & Participation

Attendance will be taken in lecture and lab. Similar story with participation in lecture -- all you have to do is get involved in the discussions.

Academic Honesty

You will do all of your own work and none of anyone else's. I take cheating seriously and file incidents with the Office of Judicial Affairs, which ensures that students caught cheating in multiple classes receive much more severe punishments.
Student Guide to University Policies: Code of Student Conduct

Grading

Grading breakdown
The course grade is broken down like so:

Final grade rule
The final course grade can't be more than one letter grade over your exam average.

Grade disputes
If you think that we made a mistake or that you were given an unfair grade, contact the grader within a week of receiving the graded assignment/exam. If you aren't satisfied with the TA's response for labs/projects, you can talk to me after talking to them about it.

How to get an A
I can't say it much better than Terry Harvey: How to Get an "A" in CISC105. You're going to have to pay careful attention to detail, work hard, and ask questions.

Letters and what they mean

Grade
Percentage Required
What this letter means
A
93
mastery of course material; can create new data structures and analyze algorithms easily
A-
90
B+
87
B
83
average understanding, may need some help in a few areas, but can code anything with some help
B-
80
C+
77
C
73
below average understanding, needs a lot of help, but has the potential to handle larger projects with extensive effort and help
C-
70
D+
67
D
63
D-
60
F
below 60