CSCI 1902: Structure of Computer Programming
II
Syllabus
1 About the Course
1.1 Course Description
CSCI 1902 introduces basic data structures and
their related algorithms, in particular lists, queues, stacks, and
trees. These are among the most fundamental building blocks of
computer science, and nearly all nontrivial programs make use of
them, whether explicitly or implicitly. We will approach this
material in an object-oriented framework, so concepts like class,
object, method, and inheritance will also be covered.
CSCI 1902 is a required course for computer
science majors, and it is a prerequisite for most of the
higher-level computer science courses. The programming language
used for this course is Java.
1.2 Goals and Objectives
This course is taught for mastery and retention.
Mastery and retention means that, at some unspecified time in the
future (future courses, the workplace, etc.), you will be able to
use the techniques, skills, and knowledge taught in this course to
(a) solve novel problems, (b) justify and explain your reasoning,
and (c) intelligently critique the reasoning of others. It is not
necessary to have all details at immediate recall, but successful
students will have mastered the material to a great enough depth
that external sources are consulted for details and reminders only,
not “big picture” concepts or re-learning.
Upon successful completion of this course, you
will be able to:
- Solve moderately complex real-world problems
using the Java language. You will be able to use basic control
structures and data types. You will be able to construct models of
data using fundamental object-oriented concepts such as classes and
objects, methods, encapsulation, inheritance, and
polymorphism.
- Use any of the basic abstract data structures
(ADTs) – lists, queues, stacks, and trees. You will
understand what purpose each ADT is appropriate for, you will be
able to use the implementations of these ADTs built into Java, and
you will be able to implement the ADTs yourself using two basic
lower-level data types, arrays and linked nodes.
- Implement fundamental computing algorithms
commonly associated with the basic ADTs, particularly sorting and
search. You will be able to select an appropriate algorithm for a
given problem.
- Analyze the complexity of basic algorithms,
describing their efficiency using Big-O notation.
- Explain and justify your programming decisions
(e.g., which data structures or algorithms you selected for a
particular problem) and evaluate and critique the decisions of
others.
- Use several state-of-the-art Java software
engineering tools, the Eclipse development environment, JUnit unit
testing, and exception handling.
- Work effectively in small programming teams,
dividing responsibilities, managing the design and implementation
process, and integrating code into a working whole.
- Learn a new object-oriented programming
language (such as Python) on your own, and then use it as
effectively as you can use Java.
CSCI 1902 will also exercise and further develop
your general analytical thinking and problem solving skills.
1.3 Prerequisites
CSCI 1901 is the only formal prerequisite for
CSCI 1902. Students also will benefit from experience in analytical
thinking and problem solving and experience in using common
computer science methods in problem solving.
1.4 Textbook
Frank M. Carrano, Data Structures and
Abstractions with Java, Second Edition, Pearson Education,
2007.
1.5 Computer Labs
We will target Unix ITLabs machines for the
programming assignments; there are various ITLabs throughout campus
containing such machines available for your use. (See the course
FAQ for more information.)
You must have an ITLabs account in order to submit lab
assignments.
Java is freely available for a variety of
machines, and you may do your work on the system of your choice.
However, your work will be graded on, and must function correctly
on, ITLabs UNIX machines. If you use only standard Java features,
you should have no problems, but it is your responsibility to test
that this is indeed the case. Note that we cannot provide help or
support for environments other than ITLabs SunOS, Solaris, or
Linux.
1.6 On-Line Course Information
The course web site, at http://www.itlabs.umn.edu/classes/Spring-2008/csci1902,
contains announcements, notes, this syllabus, a forum, and many
other resources for your use. This web site will be the central
clearinghouse for information about the course. We expect you to be
familiar with all parts of the course website and take advantage of
all the resources we make available to you there. In particular,
you should read any new announcements and skim any useful forum
postings at least weekly (and more frequently during busy
times).
The forum is a highly useful tool and builds
community among the students. We very strongly encourage you to
actively participate.
1.7 Course Format
Weekly class meetings for this course consist of
2.5 hours of lecture and a 50 minute lab; the course takes place
over a 15 week semester.
The primary teaching method in this course is
lecture, supplemented with frequent brief in-class group
activities. Lecture segments are of a length appropriate to the
complexity of the material and the attention span of you, the
student. The activities give you immediate experience working with
concepts as they are introduced. They are designed to get you to
raise thorny issues at once, for yourselves, thus motivating and
helping you make sense of the presented solutions.
I work to foster a student community in this
course. Students are more motivated when they feel they are part of
a greater whole, and a feeling of community encourages teaching
interactions between students, which benefit the learning of all
students involved. We’ll use three tools to this end: the
online discussion forum, assigned groups, and self-selected groups.
Assigned groups reduce the terror of forming one’s own group
in a class filled with strangers, and they foster interactions
between students who might otherwise not interact. On the other
hand, students often prefer self-selected groups. For programming
assignments, you will work in self-selected groups of size two. In
class activities, you will work in assigned or self-selected
groups.
The forum is intended to be a place for all
students to gather and discuss course issues. The course staff will
step in to moderate and answer questions as needed, but we
encourage you to answer each others’ questions. We will
generally take a laissez-faire attitude towards management: posts
will be removed only if we think they inappropriately reveal
answers, may be illegal, or may violate University or department
policies (e.g. harassing or threatening posts). Off-topic posts
will be removed only if they are beginning to overwhelm the
on-topic posts. Complaining about the course and teaching staff is
explicitly permitted, but do be aware that we read what you
write.
Office hours are a key component of success,
because they permit flexible one-on-one interaction not possible in
class. I specifically invite you to visit and would be most pleased
if you did so.
2 Coursework and Grading
2.1 Components of Your Grade
|
24%
|
4 quizzes @ 8% each; lowest score will be
dropped
|
|
30%
|
Final Exam
|
|
40%
|
Programming assignments (five @ 8%)
|
|
6%
|
Quiz/exam question proposals (1 @ 2%, 1 @
4%)
|
In addition, you must complete 10 out of 15 of
the labs to pass the course.
You are responsible for choosing a workload
(school, work, social life, etc.) that you can handle. If you
overload yourself, you increase the likelihood that your grades
will go down. University policy for normal courses is that students
should plan to spend at least 8 hours per week outside of class and
4 hours in class for a four-credit class just to receive a C
grade.
We will design the assignments, quizzes, and
exams with the intention of assigning grades without a curve: that
is, a cumulative percentage of 90-100% will be some level of A,
80-89% some level of B, 70-79% some level of C, and 60-69% some
level of D. We will curve grades lower (but never higher) only if
necessary.
For information on the meaning of letter grades,
please refer to the section Grading Policy in the Undergraduate
Catalog.
2.2 Examinations
There are 5 exams: four 25-minute quizzes and a
final exam. All dates are specified on the course schedule. All the exams
are closed-book; however, you may bring one letter-size piece of
paper, two-sided, of handwritten notes. The final is comprehensive,
although it will emphasize material covered at the end of the
semester that was not tested on any of the quizzes.
Exam grading is criterion-based. That is, they
measure how well you have mastered specified course objectives.
They will not be curved except in extraordinary circumstances.
There will be a review session before each quiz and the final to
remind you of the objectives. Sample quizzes and a sample final
will be made available to illustrate the type of questions you can
expect. Further, as specified elsewhere in the syllabus, you will
submit several sample test questions.
Questions will be categorized using a simplified
version of Bloom’s taxonomy of knowledge 1 .
- Knowledge – Recall or recognition
of specific information. For example, a student might recall the
time complexity of a standard sorting algorithm.
- Comprehension and Application
– understanding and interpreting facts and principles,
solving problems, applying concepts to new situations. For example,
a student might write down in pseudocode a previously learned
sorting algorithm, translate an algorithm from one language to
another, or adapt an algorithm to use a new list data
structure.
- Problem solving – transferring
existing knowledge and skills to new situations, including
analyzing material into component parts, synthesizing parts to form
a whole, and evaluating a set of alternatives to identify the best
option. For example, a student might determine the efficiency of a
new algorithm, create a new program (from previously learned
components and techniques) to meet a specification, or select (and
justify) the best sorting algorithm for a specified
application.
As traditional, each exam questions will be
worth a certain number of points. In addition, each question will
be designed to target a specific level of learning, which will be
indicated on the exam handout.
2.3 Assignments
2.3.1 Programming Assignments
There will be five graded programming
assignments. You’ll have at least two weeks to complete each
assignments. You will do the 1st, 3rd, and
5th assignment in self-selected groups of size 2. You
must do these assignments with a partner. You will do
assignments 2 and 4 individually. Assignments
specifications will be available no later than the day before the
previous assignment is due. Assignments are due at 5pm on the due
date unless otherwise specified.
The specifications for each programming
assignment will be divided into three “tiers”, C-level,
B-level, and A-level. You must complete all the C-level
specifications to earn a C for an assignment; in addition to this,
you must complete the B-level specifications to earn a B; and if
you also complete the A-level specifications, you will earn an
A.
2.3.2 Exam Question Proposals
Each student will submit sample questions for
one of the four quizzes and for the final exam. For quizzes, the
sample questions will be due at the class session prior to the
quiz. For the final exam, sample questions are due at the last
class meeting on May 7. Due to time limits, no grace days may be
used on quiz/exam question proposals.
Each student will be randomly assigned to turn
in a set of questions for one of the quizzes. You will be
told which quiz you’re responsible for by Wednesday, January
30. All students will turn in sample questions for the final.
The sample questions are intended as a
learning/study tool for you, not to reduce the amount of work to
create the exams. For a quiz, you must write three questions, one
targeting each of the three learning levels specified above. For
the final, you must write six questions, two for each of the
learning levels. Along with each question, you must write an answer
you deem correct and sufficient for full credit.
Quiz questions must not be copied exactly from
an example in class, a book problem, or a sample quiz that we have
provided to you.
Grading will be credit/no credit; these are not
graded for correctness. To earn credit, your work must demonstrate
that you have made a good faith effort to create high-quality exam
questions; in other words, your work must show substantial thought
and effort.
The questions you submit are candidates for
inclusion on the exam. Submissions with a question selected for the
exam will receive 20% extra credit, so be thoughtful. Exams will
contain between 0 and 50% student-submitted questions or
adaptations of them.
For the final exam, you must submit
6 questions, 2 for each category (Knowledge,
Comprehension/Application, Problem Solving.) At least 1 question
per category must cover a topic that has not been covered on a
previous quiz.
Producing the sample questions is an individual
assignment: you must write the questions and answers yourself.
However, once you’ve completed and submitted them, we
encourage you to share your end product with your fellow students
too assist in studying. Posting them on the forum is an excellent
way to do so, as it gives equal access to everyone.
2.4 Lab/Recitation
The weekly lab session will consist of a
self-contained activity that illustrates key concepts through a
hands-on Java programming exercise. The activities are designed to
expose you to essential concepts and language features that you
will use to complete the programming projects and that you will be
tested on. The core part of each activity is designed with the
intention that all students can complete it successfully in a
50-minute lab session. Most of the labs contain an optional part
that explores the issues more deeply; after you’ve completed
the required core, you can go onto the optional part to enhance
your learning and understanding, or you may leave.
Attendance is neither required nor purely
optional. Instead, you must successfully complete 10 of the 15
labs. When you’ve completed the core part of a lab, let the
TAs know, and they will record it. Just to be clear, the lab
activities must be completed within the lab session
in order for you to receive credit.
The last week of the semester (the 15th week), you will have the
option of completing any one lab (except for lab 0) from earlier in
the semester which for which you have not yet received your checkmark.
There will also be an advanced lab for you to try if you already have
enough completed labs and would like a challenge.
3 Class Policies
3.1 Late Homework
Late homework will not be accepted. This means
that there is no sliding grade penalty; late work will receive a
zero. As noted elsewhere, programming assignments are due at 5:00
PM on the due date unless otherwise specified. Sample quiz/exam
questions sets are due at the beginning of class on the due date.
This means that you should not skip class or arrive tardy because
you were finishing your homework. Work is considered to have been
submitted when the last portion is submitted. In particular, this
means that corrections to submissions are not accepted after the
due date.
There are two and only two exceptions to this
policy:
- Emergencies which cannot be anticipated, e.g.
illness, family emergency, etc. Please contact us as soon as
possible once you know the emergency exists, and we will be happy
to work with you. Documentation of the emergency will probably be
required.
- “Grace days.” Each student has one
late work grace day to use at any time during the semester —
you may turn in one assignment one day late. If you use a grace
day, you must note this fact prominently on your turned-in work,
and please contact us to arrange turning in hard copy on non-class
days. There is no grade penalty for use of your grace day.
It is always better to turn in incomplete work,
earning partial credit, rather than nothing at all. If you have any
concerns on this matter, please do not hesitate to contact us.
3.2 Make-Up Exams
Make-up exams will generally not be given, and
unexcused absences on exam day will incur a grade of zero on the
exam. In case of unforeseeable emergency, please contact us as soon
as possible to arrange a make-up exam or other workaround.
3.3 Grading Problems
We are human, and we occasionally make mistakes
in grading. We strongly encourage you to review our grading of your
assignments and exams, and we are more than happy to hear your
concerns on this issue. In particular, you should check your grades
in GRIT after every assignment and before the final exam. GRIT is
automatically generated from our master grade book, so errors there
imply errors in your final grade.
To be considered, grading irregularities or
other problems must be brought to our attention within 10 calendar
days after feedback is sent or made available. This period starts
the day we first bring graded items to class, announce
availability, or email feedback, not the day you pick up the item
or read your email. Please contact the TAs first with problems, but
do not hesitate to contact Prof. Terveen if you are unable to
resolve the problem.
Please keep all returned work until final grades
are posted.
3.4 Attendance
As specified elsewhere in the syllabus, you must
complete 10 of the 15 lab activities to pass the class. While
attending lecture sessions is not required, it is strongly
recommended. We work hard to make class time valuable for students,
and student learning correlates very strongly with attendance. If
you are finding class time unhelpful, we would much prefer that you
let us know, so we can identify and solve the problem, rather than
simply not attending. Further, if you skip class, it is not
reasonable to expect the teaching staff to fill you in on what you
missed. And you are responsible for knowing what goes on during
class, regardless of whether you attend or not, i.e., do not expect
everything to be posted on the class website.
3.5 Good Faith Interpretation of Directions
You are required to make a good-faith effort to
follow the spirit of any directions or instructions we give with
class work; in other words, you are not permitted to “game
the system” or interpret assignments in strange ways to make
things easier for you.
Some examples: if you encounter errors or
ambiguity in assignments, we expect you to expeditiously seek
clarification from us; or, if you encounter apparent bugs in the
tools or code we provide, we again expect you to seek clarification
rather than concluding they are broken and proceeding another
way.
4 Department, College, and University Policies
4.1 Incompletes
We will grant an incomplete very rarely, and
only in 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 (typically the final assignment or exam).
Incompletes will not be granted for foreseeable events, including
heavy course load or poorer-than-expected performance. Verifiable
documentation must be provided, and arrangements for the incomplete
should be made as soon as such an unforeseeable event is
apparent.
4.2 Withdrawals
February 4th is the last day to drop
the course without a “W” grade. Through March
17th, you may withdraw with a “W” grade
without permission from anyone. After that, withdrawal is up to
your college and is not automatic. If you are having trouble and
are considering dropping the course, I encourage you to come talk
to me before doing so. While this decision is up to you, I’d
like the opportunity to help you figure out a solution short of
dropping.
4.3 Scholastic Conduct and Academic Integrity
Academic dishonesty is a grave matter, and can
result in failing the course and/or more severe disciplinary
action. See the section Academic Integrity in the
Undergraduate Catalog and the Office for Student Academic Integrity
(OSAI) web site.
Academic integrity is essential to a positive
teaching and learning environment. All students enrolled in
University courses are expected to complete coursework
responsibilities with fairness and honesty. Failure to do so by
seeking unfair advantage over others or misrepresenting someone
else's work as your own, can result in disciplinary action. The
University Student Conduct Code defines scholastic dishonesty as
follows:
Scholastic Dishonesty: Scholastic dishonesty
means plagiarizing; cheating on assignments or examinations;
engaging in unauthorized collaboration on academic work; taking,
acquiring, or using test materials without faculty permission;
submitting false or incomplete records of academic achievement;
acting alone or in cooperation with another to falsify records or
to obtain dishonestly grades, honors, awards, or professional
endorsement; altering, forging or misusing a University academic
record; or fabricating or falsifying data, research procedures, or
data analysis.
In the context of this course, we will specify
whether assignments are individual or group work. For the rest of
this section, “you” refers to you as an individual or
you as a group, as appropriate, and “others” refers to
other individuals or groups. While you are free to discuss
assignments with others, the work you turn in must be your own.
This means that on written assignments you must create and write
your own work, and on programming projects you must design,
implement, debug, and test your program on your own. In addition,
copying, assisting, or collaborating on an exam is misconduct, as
is changing your answer after the exam is returned and then asking
for regrading. Claiming emergency when none exists, in order to
obtain special consideration on homework or exams, is also
considered misconduct.
We emphasize again that cheating, including
two different project groups sharing code for a programming
assignment, will result in severe penalties, typically failing the
course and a notification being sent to the CS Department and the
IT Dean.
If you have any questions on this matter, please
do not hesitate to ask us.
4.4 Class Conduct
Students are expected to treat their fellow
students in the class, the instructor, and the teaching assistants
with respect. This includes arriving at class on time and staying
until the end of class (arriving late and leaving early are
distracting to your instructor and classmates, and they interfere
with group work). Talking to neighbors, reading newspapers, using a
laptop for anything but course-related work, and sleeping during
lectures are also distracting and disrespectful, so don’t do
these things.
4.5 Disabilities
It is University policy to provide, on a
flexible and individualized basis, reasonable accommodations to
students who have documented disability conditions (e.g., physical,
learning, psychiatric, vision, hearing, or systemic) that may
affect their ability to participate in course activities or to meet
course requirements. Students with disabilities are encouraged to
contact Disability Services and their instructors for a
confidential discussion of their individual need for academic
accommodations. Disability Services is located in Suite 180
McNamara Alumni Center, 200 Oak Street. Staff can be
reached by calling 612-626-1333 voice or TTY, or on the web at
http://ds.umn.edu/.
|