Syllabus for CSC 23 - Spring 2005

Monday, Wednesday and Friday 12:30 - 1:35

Sudikoff 115

Tuesday 1:00 -1:50 Sudikoff 01

Teaching Assistants

Sara Thiebaud
Office Sudikoff 01
Phone  
Office Hours  Monday,
Thursday,
Sunday
7:00-9:00 PM
Paritosh Kavathekar
Office Sudikoff 223
Phone 603-646-8754
Office Hours  Wednesday  
1:00 - 4:00 PM

Friday
2:00 - 5:00 PM

David Fullerton
Office Sudikoff 01
Phone  
Office Hours  Tuesday
4-7 PM
Saturday
3-6 PM
 

Instructor

Prof. Stephen  Linder 

Office Sudikoff 216
Email  
Phone 603-646-1613
Office Hours  Tuesday and 
Wednesday 5:00 - 7:00 PM

Course Overview

The IEEE Computer Society defines software engineering as 

the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software

This course explores the software development process  with an emphasis on team software development. The course's focus will be on a complex three person team project which requires extensive collaboration, and an adaptive mindset.  Each team member will be assigned a different components of the project. The projects are described in the Request for Proposal.

"It's more important that Java programs be easy to read than to write."

- Graham Hamilton,
Sun Fellow in the Java Platform Team, Sun Microsystems

from Tiger and Beyond, the Future of the Java Platform

Goal

Develop the confidence, skills and habits necessary to write large computer programs while part of a multi-person team. Become conversant in software engineering paradigms, and be exposed to various public domain tools that make the software development process easier. And finally, enhance skills in self-directed learning,  problem solving, and communication.  

Question: How do you debug your Java code?

 

When you write Java code, what standards do you follow?
 

 
This came from an old web page at http://www-4.ibm.com/software/developer/library/java-pollresults/

Pedagogy

Learning that actively engages students in material is more effective than listening to monotonous lectures. I am a proponent of active learning, which flies in the face of traditional passive learning by involving students directly in the learning process ( I got this line from my former student Josh.)  If you want to read more about this approach read my paper Facilitating Active Learning.

Not all material required for completion of your programming assignments will be covered in class. Students are expected to independently read technical documentation and to search the web for answers to technical questions that might arise as they work on their projects. You are encouraged to share the fruits of your research through in-class presentations and use of the class newsgroup.

In the past students have lamented that assigned projects were too difficult. Some even went so far as to intimate that the instructor would not be able to implement the assigned projects. These projects have purposely been designed to be interesting and engaging; interesting projects are usually challenging. While having challenging projects might be initially painful, in the long run you will better understand how to develop software and solve problems. 

All students are expected to participate in class discussions and in addition provide their rationale for answers. Active participation is more important than always being correct. 

At times I will critique your answers to questions or work in the presence of other students, especially those on your project team. While this may be uncomfortable for some of you, it is no different than situations that you can expect to find yourself in when you are in the work place. In doing so, I do not intend any personal slight: If, at any time, you feel I have made an inappropriate remark, please talk to me as soon as possible so I can attempt to rectify the situation.

Text Book

Required Textbook

The C Programming Language (2nd Edition)
by Brian W. Kernighan and Dennis Ritchie  

Amazon.com- Books - $40.00

 

Helpful Books

The Java Programming Language (3rd Edition)
by Ken Arnold, James Gosling and David Holmes

Publisher: Addison-Wesley Pub Co; 3rd edition (June 5, 2000)
ISBN: 0201704331 

Amazon.com- Books - $39.99

I also like 

Thinking in Java (3rd Edition)
by Bruce Eckel

There is an online version of this book that makes the price right.

Student Assessment

Students will be evaluated using three metrics grading will consist of three parts

quizzes  at the beginning of class meeting there will be a quiz on the reading assigned for that day 
assignments assignments done by individual students
team project a three (or two) person team software project due the last day of class

Quizzes

In order to motivate students to keep up with the reading and promote class participation there will be a quiz at the beginning of class on the reading. These quizzes will be short. The quizzes shall be be designed so that they are relatively easy if if you have done the reading. 

There will be no make-up quizzes.

Assignments

There will be weekly assignments at the beginning of the term that are designed to help guide you in the design, implementation and the development process of your final project. These assignments are to be done individually unless otherwise stated in the assignment. 

Team Project

The team project will fully occupy your time during the last half of the term. Each team member is responsible for a single module of multiple module project. The team collectively is responsible for integration. Class will meet in the computer lab, and each software team will meet with the instructor each week for half hour. Your assessment on the team project will be based on you being

Your assessment will be weighted approximately as followed

quizzes  20% 
assignments   30%
team project 50%

Extra Credit

Extra credit will also be given to students that help other students during lab, provide answers to questions on the class email list, and otherwise contribute to a positive and supportive learning environment.

Accommodation

Any student with a documented disability needing academic adjustments or accommodations is requested to speak to me by the end of the second week of the term. All discussions will remain confidential, although the Student Disabilities Coordinator may be consulted to verify the documentation of the disability.

Attendance

Attendance is not required except when working on group projects. Students missing group meetings, in or out of the lab periods, will be penalized. Students missing classes will of course miss out on any credit for class participation.

Out of class lab group meeting

Students shall be required to participate in team meeting outside of class to complete their group lab project. 

Collaboration

While the formation of study groups and collaboration in learning the course material is strongly encouraged, all work should be produced by the individual taking credit for the work, unless the particular assignment indicate otherwise.

Email/Newsgroup - electronic discussion forum

C2 23 will have a course mailing list maintained by the instructor. If you do not receive email from me in the first week please email me. 

Students are encouraged to actively participate on the list.  I monitor the list and occasionally give hints or relax requirements for an assignment. You can only make your life easier by checking your email daily.  

Miscellaneous Pebbles

Homework Submission and Evaluation

Homework will be submitted electronically using CVS. Along with your submission you must have

Coding Style

Follow the Coding Standards when ever possible and use Jalopy to format your code. Programs will be also graded on the correctness of the design, proper choice of field, method and class names, proper formatting , and the generation of Javadocs for all public methods. NetBeans includes a wizard to help you write your Javadocs. Other references are

Code Reuse

Students are discouraged from writing all code fragments from scratch. Most things you do in Java follow a pattern that has already been optimized. Unless the assignment explicitly says you must code something yourself, you are free to look for resources that help you solve specific problems. However, full credit for a lab assignment will only be given to students that write a substantial portion of their program. 

You can reuse any code that is on a website directly linked from the course website or from a link in a faculty email. 

You are allowed to use any code fragments or Java class that you find searching the web, magazines or books, but only if you reference the source of the code and include the original author in the author list. You are always responsible for documenting code that you reuse and for being able to explain what it does.

What Code Reuse is Forbidden

You are forbidden to reuse code from a current or former Dartmouth student, one of my former students, or to to hire someone else to program for you. Also, you can only reuse code that is publicly available to all CSC 23 students. If you have other code that you would like to use, you may consult the instructor, and the instructor may opt to approve its use for yourself and the rest of the class.

The ability to properly re-use code is a crucial software engineering skill. However, both ethics and the Dartmouth Honor Code require that any work you submit for credit must be properly attributed. It is a violation of the Honor Code to submit code or other problem solutions written by others, which are represented as your own work. Note that the violation is not in submitting code you did not write yourself, but in asserting authorship of code you did not write yourself. If there is any doubt in your mind, please ask! There is no penalty for asking in advance.

Organization of Teams

Later in the semester the instructor will select three-person teams with the goal of creating diverse teams with a wide breadth of expertise. The projects will be partitioned into three modules and each team member selects a module. You are responsible for integrating your module with your teammate's module to synthesize a final product.  See FAQ - Cooperative-Group Problem Solving

Laboratory Access

In order to obtain access to Sudikoff after hours, and to get into the lab in 001, you will need to have your ID card activated for the appropriate access. To do this, stop by and see Kelly at 101 Sudikoff on a weekday between 8:30am-12:00pm, or 1:00-4:00pm, and bring your Dartmouth ID card. Keep in mind that it may take 24 hours for access to be activated, so please plan ahead!

When you stop by to have your card activated, be sure to tell them you are taking CS 23, so you will get the appropriate access. You will have to fill out and sign a form stating that you understand the various policies about access to the labs in Sudikoff.

We will arrange for you to obtain an account on these machines, if you do not already have one. Please use your Unix account for all programming work in this course.

Please note that the exterior doors of Sudikoff are automatically locked after 6:00pm weekdays, and also every weekend and holiday. In addition, the laboratory doors are locked at all times. You will need your access card to pass through locked doors.

Non-Recording Option

Because COSC 23 involves teamwork, and has a significant workload, the non-recording option is not available for this course.