Title: | Software Engineering Fundamentals |
Institution: | Metropolitan State University of Denver |
Course ID: | CS 390R |
Semester: | Spring 2017 |
Meetings: | §1 Mondays & Wednesdays 10:00AM - 11:50AM
[35336] §2 Tuesdays & Thursdays 10:00AM - 11:50AM [35337] |
Location: | Central 101 |
Hours: | Credit Hours: 4 Contact Hours: 60 Additional Student Work Hours: 120 to 180 hours outside of class |
Prerequisites: | CS2050 with grade of "C" or better |
Policies: | http://www.jodypaul.com/cs/swefun |
Moodle Site: | http://gouda.msudenver.edu/moodle |
Instructor: | Dr. Jody Paul (schedule & office hours) |
E-mail: | jody @ computer . org |
Office: | Science 1038 (x68435) |
Campus Mail: | Campus Box 38 |
This course introduces the enterprise of software engineering and establishes a foundation for further study and practice in the software engineering domain. Topics and concepts introduced in this course include: Software Development Life Cycles (SDLC) and SDLC Models; Object-Oriented Programming; Test-Driven Development; Code Quality Assessment (Static and Dynamic Analysis); Principled Debugging; Source Code Management; Automated Build Management; and Software Development Teams. Students participate in software development experiences to reinforce acquired knowledge of the techniques and tools introduced in the course.
In addition to introducing software engineering concepts, the course provides opportunities to gain experience and to expand the set of useful mental and technological tools. It includes practical tips for becoming a better programmer acquired over decades of experience in industry and the study of programming best practices.
Participants are expected to already have a good working knowledge of, and facility with, the Java programming language and be willing to try out new approaches and techniques for software development.
This course requires significant time spent outside of the classroom. This course will likely require an average of twelve hours of work per week outside of class (some weeks less and others more). Collaboration is a necessary component of this course and requires availability to meet and work with others outside of class.
Beginning Software Engineering
by Rod Stephens
Wiley (2015); ISBN 9781118969144
REQUIRED
Building Maintainable Software, Java Edition:
Ten Guidelines for Future-Proof Code
by J. Visser, et al.
O'Reilly (2016); ISBN 9781491953525
REQUIRED
Pragmatic Unit Testing in Java 8 with JUnit
by Jeff Langr, et al.
Pragmatic Programmers (2015); ISBN 9781941222591
REQUIRED
Debugging Teams:
Better Productivity through Collaboration
by B. W. Fitzpatrick and B. Collins-Sussman
O'Reilly (2015); ISBN 9781491932056
REQUIRED
97 Things Every Programmer Should Know:
Collective Wisdom from the Experts
edited by K. Henney
O'Reilly (2010); ISBN 9780596809485
REQUIRED
This reading is also available online
at no cost under Creative Commons licensing:
http://bit.ly/97things390R
Version Control with Subversion
by B. Collins-Sussman, et al.
svnbook.org (2016); Available Online
REQUIRED
Redmine: User Guide
by Redmine
redmine.org (2015); Available Online
REQUIRED
Software Engineering:
Software Development Tools
jodypaul.com (2016); Available Online
REQUIRED
Clean Code: A Handbook of Agile Software Craftsmanship
by R. C. Martin
Prentice Hall (2008); ISBN 9780132350884
Required for Extra-Credit Assignments Only
Debug It!
Find, Repair, and Prevent Bugs in Your Code
by P. Butcher
Pragmatic Programmers (2009); ISBN 9781934356289
Required for Extra-Credit Assignments Only
The Object-Oriented Thought Process (4th Edition)
by M. Weisfeld
Addison Wesley (2013); ISBN 9780321861276
Required for Extra-Credit Assignments Only
Java 8 Lambdas:
Functional Programming For The Masses
by R. Warburton
O'Reilly (2014); ISBN 9781449370770
OPTIONAL - Java
Polymorphism: As It Is Played
by J. Bergin
Slant Flying Press (2015); ISBN 9781940113050
OPTIONAL - Object-Oriented
Pragmatic Guide to Subversion
by M. Mason
Pragmatic Bookshelf (2010); ISBN 1934356611
OPTIONAL - SCM/Subversion
Mastering Redmine - Second Edition
by A. Lesyuk
Packt Publishing (2016); ISBN 1785881302
OPTIONAL - Redmine
Effective Unit Testing:
A guide for Java developers
by L. Koskela
Manning Publications (2013); ISBN 1935182579
OPTIONAL - JUnit
Students are expected to prepare in advance for class sessions (reading, exercises, forum posts, assignments, etc.) and to participate in class discussions and collaborative activities. Participation in class discussions and activities is mandatory and constitutes part of the overall grade for the course. There are no “make-ups” for missed in-class activities and exercises.
A substantial amount of information is disseminated during class sessions. Additional information is provided via the course website. Students are responsible for knowing this information whether or not they attended the sessions or accessed the website. In particular, the textbooks and references provide some but not all of the information necessary to successfully complete the course.
The course support website (Moodle) provides the primary vehicle for managing assignments and other assessments in addition to being a key source of important course and domain information.
Deliverables associated with assignments may be submitted for scoring at any time prior to the published deadline (due date/time).
No assignment deliverables will be accepted after the published deadline.
In the past, the most successful students applied the strategy of setting their own "individual" target deadlines to be 24 hours in advance of the published deadlines. In support of this practice, out-of-class assignments will be provided and have due dates/times set so there is ample time for completion and delivery more than 24 hours prior to the published deadline.
Because there are many risks to completion and submission, you are strongly encouraged to target completion of an assignment no less than 24 hours prior to the published deadline and to submit an assignment no less than 12 hours prior to the published deadline.
Illnesses, crises, and emergency situations will be dealt with on a case-by-case basis in accordance with University, College, and Departmental policies.
There are graded activities in the course (assignments, tests, ...) and students are expected to complete all activities. Not completing a graded activity earns a score of zero for that activity. Activities have different maximum point values indicating the importance and relative weight of each. The total course points is simply the sum of points of all graded activities. The final course grade is determined by converting the total numeric score to associated letter grades as shown.
A+ : 97% ≤ score A : 93% ≤ score < 97% A- : 90% ≤ score < 93% B+ : 87% ≤ score < 90% B : 83% ≤ score < 87% B- : 80% ≤ score < 83% C+ : 77% ≤ score < 80% C : 73% ≤ score < 77% C- : 70% ≤ score < 73% D+ : 67% ≤ score < 70% D : 63% ≤ score < 67% D- : 60% ≤ score < 63% F : score < 60%
Assignments and projects represent opportunities to learn new concepts and tools, practice applying those concepts and tools, and reflect on experiences. The intent is to enhance understanding as well as to demonstrate knowledge and ability to apply it. Details regarding assignments and projects will be provided in class or on the course Moodle website. Assignments must be turned in using the course Moodle website unless explicitly specified otherwise. In particular, e-mail and hard-copy will not be accepted in lieu of online submission.
Every assignment and project turned in must include a section (~150 words) labeled “Reflection” that describes personal insights and observations about the learning as a result of reflecting on that experience. This reflection is required whether or not the assignment specification mentions it explicitly and comprises a portion of the score of every assignment and project. (If a reflection is not required, the assignment specification will explicitly state that exception.)
Assignments must be turned in using the course Moodle website unless explicitly specified otherwise. In particular, e-mail and hard-copy will not be accepted in lieu of online submission.
The Moodle “assignment” activity allows entering and uploading working-drafts that you are not intended to be scored. Drafts will not be considered for scoring, either before or after the deadline.
To submit an assignment entry for scoring:
Note in particular:
When available, the Online text field of a Moodle assignment should be used for text-based responses and for reflections. File attachments to Online text are generally not acceptable.
Formats of files turned in for assignments must not depend on specific operating system or commercial software.
If a specific archive or file format is required it will be specified in the assignment itself.
A deliverable submitted in an unacceptable format is equivalent to no submission at all. If unsure about the acceptability of a file format, please check with the instructor prior to submission and well before the deadline.
The 24-hour period immediately preceding the published deadline for an assignment is considered a quiet period. During that 24-hour interval, the instructor will not address questions directly referencing specifics of that assignment. All students are strongly encouraged to complete assignments well in advance of this quiet period. Further, since computer systems are likely to be strained during the 24-hour period immediately preceding a published deadline, you should not depend on such systems, including the course support servers, to be consistently available during that period.
Successful programming is rarely a solitary endeavor devoid of external contributions. Collaboration, teamwork, and consultation of work by others are the norms.
Collaborative activity is required for successful completion of this course. In particular, collaboration is encouraged and regarded as an essential aspect of learning computer science and programming. Collaboration and discussion with fellow students and instructors concerning course information, materials, assignments, projects, proofreading, concept exploration and studying for exams is strongly encouraged. You are not expected to learn the course content or work on assignments and projects in complete isolation.
That said, in order to provide fair assessment for grading, the work you turn in must reflect your own efforts. You must write up your own submissions, reflecting your individual effort, for every assignment you turn in to be assessed, even if the solution results from collaborative effort. In your submission, you must credit the people with whom you worked.
If you consult any sources, your submission must explicitly reference the sources and indicate where and how they apply.
Turning in work that includes quotations without corresponding citations, does not properly cite references, or does not credit collaborators, will be treated as an act of academic dishonesty. Failing to abide by examination policies will be treated as an act of academic dishonesty. All incidents of suspected dishonesty will be reported to the Chair of the department and the Dean of the college. Consequences may include a score of 0 on the assignment, a grade of "F" for the course, academic probation, or dismissal from the institution. This is a very serious matter and should not be taken lightly. If you have any uncertainty or concerns, please discuss them with your instructor or your advisor.
Official policies applicable to all courses may be accessed at http://cs.msudenver.edu/degrees/courses/policies
MSU Denver Academic Calendar:
http://www.msudenver.edu/events/academic/
Additional official dates and deadlines, including the last dates to withdraw and holidays
MSU Denver Student Handbook:
http://www.msudenver.edu/handbook/
Important Metro State and Auraria campus policies and procedures for students