CSCE 146 -- Fall 2011

All Sections

Algorithmic Design II

Duncan A. Buell
Professor
Department of Computer Science and Engineering
University of South Carolina
Columbia, SC 29208
3A69 Swearingen
"buell" in any of several domains
803-777-7848(voice)
803-777-3767(fax)
grizzlefarb

Basics

  • Class: Sections 1, 2: 2:00-3:15 T-Th, Room B213 Main Street

  • Lab: Section 1: 8:00-9:55 W, Room 1D15 Swearingen
    Lab: Section 2: 10:10-12:05 W, Room 1D15 Swearingen

  • Office hours: 1:00-2:00pm T-Th and by appointment. I am also usually reachable by email in the evenings.

  • This URL
  • My home page
  • The official syllabus for this course.

  • Teaching assistants:
    Section 1: Jing Tian (tian9) and M. D. Siddique
    Section 2: M. D. Siddique (siddique) and Jing Tian
    in domain email.sc.edu)

  • This is the Moodle site for this course. There will be a lot of information put up on the Moodle site, which will be used instead of Blackboard. Unlike this web page, which is available to all and sundry around the world, the Moodle website will be password limited to students in this class.

  • The text for this course will be the pdf of my forthcoming book to be published by Jones and Bartlett. The pdf will be posted on the Moodle site and is for use in the class only and not for further distribution of any sort. The book will be published in time to be used in the Spring semester of 2012. Using this pdf will save you about $100 because you won't have to buy a book for this course. Put this money to some good purpose.

Caveat

The contents of this page and of the Moodle site will be changing throughout the semester. You are responsible for looking at this page and the Moodle site on a regular basis, which means at least as often as once per class/lab event, which means at least three times a week.

Tests and Assignments

The first midterm exam will be on Tuesday 27 September 2011.

The second midterm exam is tentatively scheduled for 3 November 2011 or 8 November 2011. The date of the first mid-term is fixed to make sure students have enough graded material to decide about dropping the class, but no such constraint is placed on the second midterm, so its date can be adjusted to suit finishing a topic in the course or to avoid some other exam to be taken by a large number of students. We will finalize the date when it is necessary to do so.

The lab quizzes are tentatively scheduled for 21 September 2011 and 9 November 2011. The first date is probably not going to change. The date of the second lab quiz, like that of the second exam, could be moved a week forward or backward.

Lab assignments will be short programs to be written in class. They must be turned in by the end of the lab time and will not be accepted if turned in later, period. It may be the case that the lab assignments are available earlier than class time, and if so then they may then be submitted early.

Homework assignments are longer programs to be written outside of class. They will be turned in electronically to the departmental drop box, and they must be done individually as your own work.

The exams will be closed book exams.

The final exam will be cumulative.

The final exam is scheduled for Wednesday, 7 December 2011, at 2:00pm.

The homework assignments will be on the Moodle site.

The lab assignments will be on the Moodle site.

The tentative schedule for lab and homework assignments is on the Moodle site.

The Java style guidelines can be found on the Moodle site. This is the rubric on which grading of your programs for style will be based. It is not enough that your programs "run correctly"; in order to be of "A" grade quality they must be styled and documented properly. These guidelines are the rules that define "properly".

Grading Scheme

Lab assignments 20% (ten at 20 points each)
Lab Quizzes 10% (two at 50 points each)
Homework Assignments 25% (six at 35 points each and one at 40 points)
Midterm Exams 30% (two at 150 points each)
Final 15% (one at 150 points each)

Attendance and Grades

It has been found, and should come as no surprise to anyone, that attendance at class correlates positively with your GPA. I will be taking attendance. For every three (3) unexcused absences, your grade will be lowered by one full letter. The judgement as to accepting the excuse is mine. Illness, family emergencies, and such are excusable. Returning home late from Myrtle Beach to avoid the traffic jam is not an excusable absence.

Note also that the exams count a total of only 45% of your grade. Your grade is thus heavily dependent on your lab assignments and homework assignments. What this means is that there is in the grading system a strong incentive for you to keep up to date with assignments and to come to class and labs. It is NOT possible in this class to slack off through the semester and then somehow make up the difference with a strong final. The final exam just doesn't count enough to pull up your grade, not even when combined with the two regular exams. You will need to get reasonable grades on the labs and on the homeworks in order to do well in this course.

On the other hand, it is usually the case that the grades for labs and homeworks cluster very tightly. It is not that uncommon, for example, for perhaps 80% of the students to get a 16, 17, or 18 out of 20 on a lab assignment. Since the discrimination of total points thus is dominated by the grades on the exams, it is usually the grades on the exams that play the biggest role in the final grade. You can't slack off on either the labs and homeworks or on the exams.

Unless otherwise indicated, there are no bonus points that can be earned in this class. If you want to total up points so as to get a good grade, then do the labs and homeworks and do well on the exams.

Deadlines

Assignments will have due dates. Unless otherwise specified, the usual deadline will be that homework assignments are to be sent to the drop box by 12:00 noon of the day the assignment is due.

Late assignments will only be accepted under the following conditions.

  • First, for every 24 hour period or portion thereof, I will assess a 20% penalty off the top.
  • Second, no assignments will be accepted after I post a solution, and no assignments will be accepted after I go over the solution in class. The homeworks are all set to be due on a class day at noon, and class is at 2pm, so it is likely that the grace period for late submission will only be two hours. Even if I don't go over the solution on that class day, I usually post a solution the evening of the day when the assignment is due, so it will normally be the case that late assignments will only be accepted during the rest of the day when the assignment was due in the first place. The time when I post the solution will be at my convenience; I will not adjust the time so as to accommodate your late submission.

Rules, Expectations, etc.

  • You are expected to read this website and the Moodle site regularly and carefully. You are responsible for the material in this website, including rules and scheduling information.
  • You are expected to know who I am, how to get in touch with me by email, and how to find my office in person. (See the first point above.) If you google "duncan buell" then my USC web page is what comes up first on the list, so there is no excuse for someone in a computer science class not being savvy enough to find my contact information.
  • You are expected to read your university email. If I send out a mass email to the class, it will be to the university email address for you, not to some other address.
  • You should read the material before coming to class. If we have covered all of a particular section or chapter, you should take the initiative on your own to read the next section or chapter.
  • You are expected to turn in assignments on time to the dropbox. When you turn things in to the dropbox, you are responsible for checking that in fact the material has been stored as it should be. Some of the grading process will be automatic. If you submit a dot class file instead of a dot java file, that's your fault. If you submit the wrong kind of zip file, the automatic process will probably not unzip your submission, and it will be your fault that your submission doesn't get graded. And so forth; you get the point.
  • If for some reason the Moodle dropbox is not functioning, you should immediately send me an email with your assignment attached. This email must have a timestamp before the dropbox deadline. Late assignments will be penalized. (See the first two points above.)
  • You are expected to attend class. Attendance will be taken, and it will affect your grade. The Student Success Center has found (to no one's great surprise) that your GPA is likely to improve by a full one-half point simply if you attend class.
  • This course has a prerequisite of a grade of C or better in MATH 141 and CSCE 145.

Academic Support, Supplemental Instruction, and ACE

Some of you may find this course difficult. Some of you may also be enrolled in Math 142 and find that course to be difficult. If so, you are encouraged to to consult the academic support offices, including the offices that help with tutoring, supplemental instruction in CSCE 146 and MATH 142, and the Academic Centers for Excellence. Supplemental Instruction (SI) is offered for this course and provides you with the opportunity to attend 3 study sessions per week. SI sessions are facilitated by Stephen Cevallos, an undergraduate student who has taken this course and excelled in the course material and who has done well as an SI leader in the past. Your SI leader will facilitate a discussion and activities that encourage you to practice, discuss, and ask questions about the most recent lecture material. All SI sessions are held in the Student Success Center, Thomas Cooper Library. You can find the days/times for your SI leader's sessions at the supplemental instruction website, The Department of Computer Science and Engineering has specifically paid the cost of the SI person; this is a resource you should strongly consider using if you are having trouble in the class.

Also, if in fact you find this material easy, you should consider becoming a tutor or offering to work for the Academic Support people. My understanding is that they are always looking for good people in these courses. They will actually pay you money. And as anyone who has ever taught will say, you never really learn a subject until you have to teach it to someone else.

Version Control

Everything we will use in this course either comes with the textbook or is free and available on the web for download. However, things are are available for download tend to change versions on a regular basis.

We do not believe there will be functionally different versions of software available during this semester, but if you download tools for your home computer it is possible that you will be downloading a different version from that which is used in the computer labs.

For the most part, the things that will different from one version of Eclipse to another or from one version of Java to another are not things you will notice in this class.

Java versions are labelled (and no, this makes no sense) 1.3, 1.4, 5.0, and then 6.0. The key to Java is that you have at least version 5.0 or higher. This is necessary in order for you to do everything in this course.

Similarly, we are currently running Eclipse version 3.? in the labs. We take a risk-averse approach to computer labs, in that we are unlikely to install the most recent version until it's been used and tested (by someone else). I personally am running different versions of Eclipse on my three computers (home linux, office desktop, and laptop). You will see different versions, but I cannot imagine that you'll notice any difference from one version to the next on the kind of things you'll be using in this class.

As they say in this business, your mileage may vary. You may not find exactly the same set of buttons on any of the versions of Java or Eclipse that you use, but Java 6 and a recent version of Eclipse ought to provide the functionality you need even if the buttons are slightly different. The keys to success include the ability to adapt.

HOWEVER, getting all the pieces to fit together and play nicely the first time can be a little difficult. If you are going to be using your own computer and not one of the computers in the labs to do your homework, you should leave yourself a little extra lead time on the first assignment to make sure that Eclipse can find the Java and the Javadoc executables. When it comes time to do the JUnit assignments, make sure early on that you can use JUnit. It's not smart to wait till midnight before the assignment is due to find out that one package can't find what it needs.

Academic Honesty

Assignments and examination work are expected to be the sole effort of the student submitting the work. Students are expected to follow the University of South Carolina Honor Code and should expect that every instance of a suspected violation will be reported. Students found responsible for violations of the Code will be subject to academic penalities under the Code in addition to whatever disciplinary sanctions are applied.

There seems to be a widespread misunderstanding of the concept of "your own work." In addition to the USC Code, some good sources of text for what is or is not acceptable behavior are the academic honesty policy statement from Harvey Mudd College, the policy statement from Professor Steven Huss-Lederman at Beloit College, and the text of part of the collaboration policy statement from MIT. You can expect your programming assignments to be checked against those turned in by other members of the class as well as code that I can find on the web. I expect the correlations between your work and that of others to be minimal.

I can also offer an operational definition of what you can do and of how you can distinguish "learning from a group discussion" and "turning in someone else's work." If, after having participated in a group activity, you can walk away, put the books down, have lunch, and then come back afterwards to re-create from your own head the material and techniques you discussed as a group, then you can legitimately say that you have learned from the group but the work you turn in is your own.

On the Proper Use of Computing Resources

Students are expected to be aware of the university policy on use of computing resources, including the Student Guidelines for Responsible Computing found here, as well as the college and departmental policies on proper use of computing resources. Every instance of a suspected violation will be reported. Students should be aware that neither the instructor nor the department are responsible for making alternative arrangements should improper use leading to revocation of access to departmental or college resources make it impossible for you to complete the programming assignments on time.