CSCI 306: Software Engineering

Course Information (Spring 2017)


Dr. Cyndi Rader,, website:, office: Brown Building 280D
Office Hours: T/Th, 8-9:15, also by appointment - email support highly recommended!!

Josh Thomas,
Office Hours: T/Th, 2-3:15. Location: CTLM computer commons.

Where and When:

T/Th, 11:00-12:15, MZ 26

T/Th, 3:30-4:45, CT B60

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.

Why Java?


There are no required textbooks. The following book has been used in the past, and is highly recommended:

Student Evaluation:

Labs, exercises, projects Class participation (includes piazza) Exams
50% 5% 45%

Course grading will be done on a plus/minus scale, with 93 to 100 as A, 90 to 92.9 as A-, 87 to 89.9 as B+, etc. I typically do not curve course grades.

Homework Policies:

All assignments are due at 11:59 pm on the date listed on the schedule, unless otherwise noted.

Late work is strongly discouraged. Late assignments will be penalized 10% per day. For small assignments (less than 10 points), the late penalty is 1 point per day. No assignments will be accepted more than 2 days late.

Incorrect assignments (e.g., submitting the wrong file, forgetting to include your partner's name, etc.) will also be assessed a penalty of 10%.

Programs that do not compile or do not execute will not get full credit. Deduction may be from 10-20% (in addition to points deducted for items on the rubric which are not satisfied). In other words, if you have a working program, then add some code that doesn't compile, it is better to remove or comment out that code.


Since most of the work for this class will be done in pairs or teams, class attendance is very important, especially on days when we are completing assignments that we have already begun. If you don't show up then your partner(s) must complete the assignment on their own. To encourage participation and attendance, I will pass around an attendance sheet each day.

To get full credit for participation, you must also do at least one post on piazza.

Getting Help

Our goal is to develop effective software engineering skills, which includes the ability to use online help forums. Please try to post a question on piazza rather than contacting me directly. If you email a question to me which I think will be of interest to others, I will post it on piazza and remind you of this policy. Once we begin using git, to get help on a program you should send your git url, not a file (and never a partial file).

Piazza "Rules of Engagement" (thanks Randy B.)

Piazza for 306

Online forums can be quite intimidating. I'd like to suggest these guidelines:

In addition, this classroom is based on mutual RESPECT. This includes respect for your classmates, your instructor and yourself. It's important to recognize that the rigorous requirements of studying at Mines can cause stress, which sometimes results in distressed or disruptive behavior. If you are experiencing issues, or believe that one of your partners or teammates is, please SPEAK UP. Feel free to come talk to me, or visit

Collaboration Policy for Programming Projects in CS Courses

The following policy exists for all CS courses in the EECS 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:
  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. To prevent unintended sharing, any code stored in a hosted repository (e.g., on github) must be private. For group projects, your team members may, of course, be collaborators.
  5. If you are aware of students violating any aspects of 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.


Info on this page is also available on this syllabus, in case you prefer to print a copy.

The Colorado School of Mines is committed to ensuring the full participation of all students in its programs, including students with disabilities. If you are registered with Disability Support Services (DSS) and I have received your letter of accommodations, please contact me at your earliest convenience so we can discuss your needs in this course. For questions or other inquiries regarding disabilities, I encourage you to visit for more information.