CSCI 306: Software Engineering

 
Course Information (Fall 2009):
Current Session:
Labs & Exercises Very Tentative Schedule

Section Day Time Room Instructor Email
A: MWF
9:00
CTLM 231 Cyndi Rader crader@mines.edu
Course Goals: This course is intended to make you a better software programmer by providing an introduction to the processes and considerations of Software Engineering. You will learn to plan and execute iterative programming projects in groups, critique (and improve) existing code, and learn the basics of widely used software engineering processes and techniques (including Agile Development and UML). Assignments will not be restricted to coding, and should encourage students to ‘think’ as software engineers, rather than individual programmers.
Java Chapter
Notes:
Java Basics
Java I/O
Basic GUIs
Unit Testing
OO Concepts
Collections
Software
Engineering

Generics
Java Techniques
Java Links
Agile Chapter
Notes:
Section 1 (1-6)
Section 2 (7-12)
Section 3 (13-18)
Section 4 (19-22)
Section 5 (23-26)

Section 6 (27-29)
Other
Notes:
Use Cases
UML
Eclipse
Version Control
Subversion
Extreme Programming
Test Information:
Test 1 Hints Quiz Hints
Textbooks:
  • Agile Software Development, Principles, Patterns and Practices, by Robert C Martin, Prentice Hall, ISBN 0-13-597444-5 (required)
  • Big Java, Third Edition, by Cay Horstmann, Wiley and Sons, 2008, ISBN 0-471-10554-2 OR Java Concepts, by Cay Horstmann, Wiley and Sons, 2008, ISBN 978-0-470-10555-9  (recommended)
Evaluation:
  • Labs, exercises, class participation and projects: 50%
  • Quizzes and exams: 50%
  • Late Policy: 1 point per day for two days, 2 points per day thereafter
Java
Info and Other Interesting Links
Sun JavaDocs 1.5: http://java.sun.com/j2se/1.5.0/docs/api/

WinSCP for file transfers: http://acn.mines.edu/software/summaries/secure/winscp.shtml

Eclipse Tutorial

NOTE: If you are having trouble starting Eclipse on campus, try deleting the .Eclipse directory from C:\Documents and Settings\<your user directory>.

http://www.mountaingoatsoftware.com/scrum

Submitted by Mark Barkmeier:

Dilbert & Agile
Programming Project

Submitted by Andrew Gracey:

http://www.geekherocomic.com/2009/02/21/agile-development-explained

It's a sexy career!

Student Evaluation
Labs, exericise, class participation
Exams & Quizzes
50% 50%


 
Collaboration Policy for Programming Projects in MCS Courses
The following policy exists for all CS courses in the MCS department. This policy is a minimum standard; your instructor may decide to augment this policy.
  1. If the project is an individual effort project, you are not allowed to give code you have developed to another student or use code provided by another student. If the project is a group project, you are only allowed to share code with your group members.
  2. You are encouraged to discuss programming projects with other students in the class, as long as the following rules are followed:
    1. You view another student's code only for the purpose of offering/receiving debugging assistance. Students can only give advice on what problems to look for; they cannot debug your code for you. All changes to your code must be made by you.
    2. Your discussion is subject to the empty hands policy, which means you leave the discussion without any record [electronic, mechanical or otherwise] of the discussion.
  3. Any material from any outside source such as books, projects, and in particular, from the Web, should be properly referenced and should only be used if specifically allowed for the assignment.
  4. If you are aware of students violating this policy, you are encouraged to inform the professor of the course. Violating this policy will be treated as an academic misconduct for all students involved. See the Student Handbook for details on academic dishonesty.