CSCE 240 -- Spring 2010

Section 001

Introduction to Software Engineering

Duncan A. Buell
Professor
Department of Computer Science and Engineering
University of South Carolina
Columbia, SC 29208
3A69 Swearingen
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 2A21 Swearingen
  • 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. Most of the relevant information, assignments, grades, and so forth, with be put up on the Moodle site. Unlike this web page, which is available to all and sundry around the world, the Moodle website is 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.

Copyright

The material presented on this page and on the Moodle site is copyrighted material. Although you own, under USC rules, your homework and program submissions, the copyright for the source text for the homeworks, programs, and other material remains either with the textbook author or with the instructor of this course. It is a violation of copyright to upload this material to any of the various homework-sharing websites.

Further information on copyright can be found at the official the official website, which you are encourage to consult both to help you ensure that you are in compliance with existing law as well as to know how to protect your own intellectual property.

Rules, expectations, etc.

  • You are expected to read this website and the Moodle site regularly and carefully. You are responsible for the material on these sites, 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. 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 Moodle dropbox. When you turn things in to the dropbox, it is your responsibility to check that in fact the material has been stored as it should be, that the right number and kind of files have been uploaded, and that the case sensitivity of file names is as it should be. The standard platforms for this class are the Linux systems in the departmental labs, and case sensitivity of file names in Linux is different from that of Windows. You are responsible for verifying that your uploads meet the specifications of the assignments.

    You are also required to print out 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 usually have due dates that are just before class time on a class day. The receipts should be submitted at class time on the day 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.
  • 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. Since the text is intended for students who have never programmed, and you have already had a year, we will be covering the first seven chapters or so in a different order. The overall plan will be to cover C++ programming by analogy with Java programming, since they are very similar in the basics. Starting about the eighth chapter, we will progress more in sequence, since the later topics are more unique to C++.

Email

You have three university-sponsored email addresses: userid@cse.sc.edu, userid@cec.sc.edu, and userid@email.sc.edu. This last id is what replaces the old userid@mailbox.sc.edu. Although these are three different addresses, the first two are aliases for the userid@email.sc.edu account, and you are expected to be reading email sent to that account. There is also 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, and then that address is used as an alias for the userid@email.sc.edu account. A mass mailing to the entire class will be done through these mail aliases. Actually, any of you can send mail to this alias.

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 16 February 2010. This will allow me to get back the exams in class on Thursday 18 February. The last day to drop the class with a "W" grade is the following Monday, 22 February.

Homework assignments are to be written outside of class. They will be turned in electronically to the appropriate dropbox, and unless they are specifically assigned as a group project they must be done individually as your own work. See below for more information on the issue of academic integrity and how to judge what will be viewed 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 final exam will be cumulative.

The registrar's calendar says that final exam is scheduled for Thursday, 29 April 2010, at 9:00 a.m.

HOMEWORK ASSIGNMENTS AND THEIR STANDARDS

The homework assignments can be found on the Moodle website for this class.

The homework assignments will have very strict standards and must be written according to the specifications or you will lose points. The style sheet standards can be found on the Moodle website.

Deadlines

Assignments will have due dates. Unless otherwise specified, the usual deadline will be that assignments are to be sent to the dropbox by 9:40am on the day the assignment is due, and the dropbox will be closed as of 9:40am. 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 from time to time in various ways. The university policy on attendance can be found here. It reads in part, "Absence from more than 10 percent of the scheduled class sessions, whether excused or unexcused, is excessive and the instructor may choose to exact a grade penalty for such absences." . 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.

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.

A second operational definition of what is acceptable might be something like the following: It is not relevant if you feel that what you have written is your own work. It is not relevant if your supervisor feels that what you have written is your own work. What is relevant is if your competitor's attorney feels that what you have written is not your own work. For the sake of time and our joint sanity, please do not submit grey material whose whiteness or blackness can only be determined after a lengthy and detailed examination.

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