CSCE 240 -- Fall 2009

All Sections

Introduction to Software Engineering

Duncan A. Buell
Professor
Department of Computer Science and Engineering
University of South Carolina
Columbia, SC 29208
3A69 Swearingen Engineering Center
Email
803-777-7848(voice)
803-777-3767(fax)
Office hours: 8:30-9:30am T-Th and by appointment
grizzlefarb

Basics

  • Class time: 9:30-10:45 am T-Th, Room B213 Main Street
  • Office hours: 8:30-9:30am T-Th and by appointment.
  • This URL
  • My home page
  • The official syllabus for this course is in development.
  • This is the Moodle site for this course. There will be a lot of information put up on the Moodle site. 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.

Caveat

This page will be changing throughout the semester. You are responsible for reading this page on a regular basis, which means at least as often as once per class/lab event.

NEW ITEMS

The last three changes to the web resources for this course will be listed here. These will consist of changes both to these pages and to the stuff available on the Moodle website. You should be able to check here, then, that you are up to date.
  • Most recent change.
  • Next most recent change.
  • Next to next most recent change.

Rules, expectations, etc.

  • You are expected to read this website 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 turn in assignments on time to the dropbox. When you turn things in to the dropbox, you should check that in fact the material has been stored as it should be.

    You are also required to print out and sign the web page verifying your submission, properly timestamped, that says that the dropbox has accepted your submission.

    This is your "receipt" for submissions, and unless you have turned this receipt in to me I will not accept as an excuse that the dropbox has moved your assignment elsewhere. Make sure your name appears on the page you turn in. If for some reason the 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.)

    Assignments will have due dates that are 9:30am on a class day. The receipts should be submitted at class time when the assignment is due.
  • You are expected to read your email as indicated below.
  • You are expected to attend class. Attendance will be taken, and it will affect your grade. See below for details. 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 CSCE 146 and in CSCE 215. Since this is a transition semester, with this version of 240 being taught for the first time, we will be lenient with respect to the 215 prerequisite.
  • It is a fundamental premise of a computer science education that you become facile with tools, operating systems, programming languages, programming environments, and the like. Standards change rapidly, and tools and languages go in and out of fashion. You will need to be adaptable, and the purpose of an education (instead of mere skills training) is that you learn enough to be adaptable to new tools. In the 145 and 146 courses the tools used were Eclipse, Java, and Windows platforms. By the time you finish this course with a C or better you should have become familiar with the tools of Unix/Linux, C++, and command-line-oriented programming as well as the more general concepts that will be presented in this class about how not to make the common and obvious mistakes that are made constantly in programming projects. You will not be successful in this course if you insist on being nothing but a Wintel clickmeister.
  • You should read the text 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.

Email

There is a CSE department email alias for CSCE 240, namely CSCE240-001 in the domain lists.cse.sc.edu. This alias sends email to the CSE departmental login userid@cse.sc.edu that you get with this course. A mass mailing to the entire class will be done through these mail aliases. Actually, any of you can send mail to this alias.

The mail alias of the previous paragraph sends mail to the CSE departmental login that you get with this course. You are responsible for reading mail sent to this account and the cec.sc.edu account of the college's mail server.

Texts, References, and Links to Useful Information

Course Objectives

  • Demonstrate mastery of object oriented programming concepts: inheritance, polymorphism, and operator overloading.
  • Demonstrate mastery of pointers, iterators, memory management including object creation and destruction, and parameter passing in C++ and Java.
  • Develop C++ code in a Unix Environment utilizing the C preprocessor, the debugger (gdb), make, source code revision systems (sccs), utilities such as those for transferring files to and from Unix and Windows.
  • Demonstrate mastery of template functions and classes; understand underlying implementation of major containers in the STL.
  • Develop object oriented models using UML.

Course Topics

  • Unix Programming Environment: Unix tools, C preprocessor, Make, Shell, I/O redirection, debugging.
  • Pointers: Pointer manipulation, functions and function pointers, virtual functions.
  • Basic class management: constructors, destructors, data hiding, container classes.
  • Memory management: object creation and destruction, memory leak.
  • Advanced C++ features: operator overloading, iteration, special containers, inheritance, code reuse, multiple inheritance, virtual functions, polymorphism, templates, template libraries.
  • Introduction to UML and object oriented modeling: use-case models, object identification, specifying static behavior, activity diagrams, collaboration diagrams and sequence diagrams, specifying relationships: generalization/specialization, aggregation, associations including multiplicity and roles, dynamic behavior using state diagrams.

Note: Course contents are subject to change without previous notice.

Tests and Assignments

The midterm exam will be on Tuesday 29 September 2009. This will allow me to get back the exams in class on Thursday 1 October. The last day to drop the class with a "W" grade is Thursday 1 October.

Homework assignments are to be written outside of class. They will be turned in electronically to the appropriate drop box, and unless they are specifically assigned as a group project they must be done individually as your own work.

In order to be consistent and fair to all students, I report any and all instances of violations of the academic integrity regulations to the appropriate university office. See below for more details.

The exams will be closed book exams.

The final exam will be cumulative.

The final exam is scheduled for Tuesday, 8 December 2009, at 2:00 p.m.

The homework assignments can be found here.

Programs will be graded both for correctness and for style. As with anything that involves taste, there will be differences of opinion as to what is correct. Of the various style sheets on the web, I find this one to be reasonably close to my personally preferred style. If you choose to follow another style sheet for which some authoritative backing exists. Another style sheet (that I have not read as thoroughly) can be found here.

Deadlines

Assignments will have due dates. Unless otherwise specified, the usual deadline will be that assignments are to be sent to the drop box by midnight of the day the assignment is due, and the drop box will be closed as of midnight. Late assignments will not be accepted without prior arrangement to accommodate truly extraordinary circumstances.

Planned Grading Scheme

Homework Assignments 50% (250 points = 20 + 35 + 35 + 35 + 35 + 45 + 45)
Midterm 20% (100 points)
Final 30% (150 points)


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 50% of your grade. Your grade is heavily dependent on your 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.

Notwithstanding the 50-50 distribution of grade based on homeworks and exams, it is necessary that you do acceptably well on both homeworks and exams in order to get a C or better in this course. If you have the highest scores in the class on the programming assignments, and the lowest scores in the class on both midterm and final, for example, you can expect to receive an F for the course.

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 homeworks and do well on the exams.

Academic Support

Some of you may find this course difficult. If so, you are encouraged to talk with some of your fellow students in the ACM chapter, because ACM can provide both formal and informal tutoring and assistance.

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. Your programs will be graded as if they had been compiled and run on the linux lab machines in the department. If you choose to use a different development environment, compiler, or operating system (even a different flavor of linux), you do so at your own risk and must provide me with whatever it takes to test your submissions with no greater effort.

Actually, if you think about it even for just one moment, it's clear that whatever "software engineering" is, it involves the production of a piece of code that can be executed effectively by its intended user. Since the intended user of your submissions is me, it becomes part of the core material of this course that you are responsible for making your code work if run by the intended user on the intended platform.

Notes and Slides

(Caveat: any lecture notes I prepare may well change during the lecture process, and if you print them too early or too often you may use up your print quota.

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

On the Nature of Academic Work

Students might also find relevant an essay from a professor at Georgia Tech.

Swearingen Engineering Center | Columbia, SC 29208 | 803.777.2880 | web@cse.sc.edu