Gold University of Minnesota M. Skip to main content.University of Minnesota. Home page.
 
 
 

What's inside.

Faq

Homework

Labs

Lecture Notes

Links

Schedule

Since You Asked

Staff

Syllabus

Online Submission Utility

Java API reference

Class Forum

Grades Online (GRIT)

 

CSCI1902 Home

Announcements RSS Feed

 
 

Printer-friendly version

 

 

 

 

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/.


1 For a presentation of the full Bloom taxonomy, see http://www.nwlink.com/~donclark/hrd/bloom.html.

 

 

 

 
The University of Minnesota is an equal opportunity educator and employer.
Structure of Computer Programming II