- Course: CSCI 3308, Software Methods, 3 Credits
- Semester: Summer A Session - June 5th to July 7th
- Instructor: Chris Womack, christopher.womack@colorado.edu
- Office Hours: Fridays from 1:00 to 3:00
- Piazza forum for questions and discussion
- Email for 1-on-1 help, or to set up a time to meet
- Office Location: CSEL or ECCR 235
- Grader: Yawen Zhang - yawen.zhang@colorado.edu
- Course Assistant: Bum Soo Kim – Located in the CSEL
- Class Time: Monday through Thursday from 11:00 to 1:30
- Class Location: ECCR 235 in the Engineering Center
This course covers tools and practices for software development with a strong focus on best practices used in industry and professional development, such as agile methodologies, pair-programming and test-driven design. Students develop web services and applications while learning these methods and tools. The following topics will be covered:
- Software Process Models
- Waterfall, Agile
- Software Patterns
- Architectural Design
- Requirements Elicitation and Analysis
- Documentation
- Licensing/Copyright/Patents/IP
- Code Quality
- Testing Methods and Strategies
- Static and Dynamic Analysis
- Code Repair Strategies
- Refactoring
- Code/Peer Review
- Code Management
- Source Code Control and Managing Conflicts
- Software Configuration Management Systems
- Bug Tracking
- Managing Dependencies/Build tools/Integration
- Continuous Integration
- Unix tools
- Data stores/access/formats/models
- Software Deployment and Deployment environments/models
The student will learn the fundamentals of software development methods and gain exposure and practice using common industry tools that are likely to be used in the workplace.
- The student will acquire state-of-the-art skills that will not only help them do their work in other programming classes but will also give them a very useful vocabulary to use on job applications and during interviews.
- The student will successfully use a variety of software tools introduced in class.
- The student will be equipped to choose the best software tool for use in a specific situation.
- The student will apply software knowledge and skills in the context of a small group semester long project.
- Requires prerequisite course of CSCI 2270 (minimum grade C-).
Required: Practical Enterprise Software Development Techniques, Edward Crookshanks, 2015. ISBN = 978-1-4842-0621-8
Suggested: Unix, Regex Golf, Regex (http://bit.ly/1vGFwJV), Makefiles, Ant, Bash Shell Scripting, Software Process & Methodologies by David Kung, Scrum Framework (just the chapter on Scrum Framework), Version Control by Erik Sink Chapters 1, 2, 5, 6, 8, Planning Poker, RDBM, E-R Diagrams, Intro to SQL Pages 1-13 (stop before views) and 16 group by/having, NoSQL, XML tutorial, JSON tutorial, SOAP vs REST, Retrospectives, Cloud, Testing, Klocwork, Find Bugs (all are provided by instructor)
Please enroll ASAP in the Moodle course web page. All of your class material will be available through Moodle, and all exams will be administered here as well. The enrollment key is: agile
Also enroll in Piazza forum for this course. This will be the first point of contact regarding assignment questions and discussions.
As moodle can be a little tedious to use for downloading all class material, I will be maintaining a repo for this class with the following content:
- Labs
- Lecture Slides
- Demo Code from Class
There is also a corresponding website that will help you get setup for the semester.
Lecture videos will be hosted on my youtube channel and will be uploaded weekly. Lectures should be watched before the corresponding lab.
Week | Topic | Reading |
1 | Introductions, Course Overview, Unix Environment, the Shell The UNIX Shell: Scripting, RegEx, AWK, sed Version Control, Project Management Software Development Methodologies (Waterfall, Agile, Scrum) |
Crookshanks, Ch. 1, 2, 3, 4, 5 |
Lab | Due | |
Lab 1: VM Setup, Basic Unix commands (10 points) Lab 2: Regex AWK Sed (20 points) Lab 3: Version Control – Github (10 points) Lab 4: Agile Planning and Sizing (10 points) |
Register for class in Moodle Homework # 1 Quiz # 1 |
Week | Topic | Reading |
2 | Database Concepts and SQL Web Services, REST/SOAP, HTML, Web Protocols System Integration Part 1 System Integration Part 2 |
Crookshanks, Ch. 10 |
Lab | Due | |
Lab 5: SQL (20 points) Lab 6: REST (20 points) Lab 7: Peer Code Review and Sprint Retrospective (10 points) Lab 8: Integrating the front-end with the back-end (20 points) |
Project Milestone # 1 Project Milestone # 2 Homework # 2 Quiz # 2 |
Week | Topic | Reading |
3 | Cloud Computing, Heroku, Collaboration Techniques Testing Methodologies Code Analysis, Debugging Continuous Integration Review for Final Exam |
Crookshanks, Ch. 6, 8, 9 |
Lab | Due | |
Lab 9: Heroku deployment (20 points) Lab 10: Unit Testing (20 points) Lab 11: Dynamic Analysis (20 points) Lab 12: Continuous Integration (20 points) |
Peer Review # 1 Project Milestone # 3 Homework # 3 Quiz # 3 |
Week | Topic | Reading |
4 | Team Week | None |
Lab | Due | |
Team Week Exam: Final |
Project Milestone # 4 Homework # 4 |
Week | Topic | Reading |
5 | Team Week Project Presentations |
None |
Lab | Due | |
Team Week | Peer Review # 2 Project Milestone # 5 Project Milestone # 6 |
Component | % | Points | Letter Grade Scale | |
---|---|---|---|---|
930 to 1000 = A | ||||
Team (2 Peer Surveys, 25 pts Each) |
5 | 50 | 900 to 929 = A- | |
Quizzes (3 quizzes, 50 pts Each) |
15 | 150 | 870 to 899 = B+ | |
Homework Assignments (Four Assignments. Points Vary) |
10 | 100 | 830 to 869 = B | |
Exam (Final, 200 pts) |
20 | 200 | 800 to 829 = B- | |
Labs (12 Labs, Points Vary) |
25 | 250 | 770 to 799 = C+ | |
Team Project & Presentations (6 Milestones, Final Presentation, and Final Report) |
25 | 250 | 700 to 769 = C | |
TOTAL | 100 | 1000 | 0 to 699 = F |
The Moodle course pages is the official site for all notifications, assignments, and all submissions of work for grading (lab assignments, quizzes and exams.)
The course includes FOUR homework assignments that comprise 20% (200 points) toward your grade. Each assignment must be completed and submitted via Moodle by its due date to earn full credit.
- Bash Shell Scripts (50 points)
- Progress tracking tools comparison and Pair programming (25 points)
- SQL (50 points)
- REST Weather Map (75 points)
Over the course of the 5-week semester, there will be 3 quizzes which together make up 15% of your grade for the course. The quiz questions are based on reading assignments and lectures. The quizzes will be administered and graded by Moodle. A quiz will become unavailable in Moodle at the end of the week it is given.
During Week 4 there will be a final exam. The exam makes up 20% of your final grade. The exam will be administered and graded by Moodle. The exam will become unavailable in Moodle at the end of the week it is given.
Students are required to form a team with other students in the same lab section. Each team will execute a software development project. The team will agree upon a software product that they will design, develop and present to the rest of the class during the course of the semester. This project makes up 25% (250 points) toward your grade. The project challenges students to use some of the software tools and development methods covered in lectures/labs. Project grades are based on the submission of the following milestones submitted during the course of the project.
Milestone 1 | 40 Points | Project Proposal |
Milestone 2 | 40 Points | Agile Client Demo and Write Up of Milestones and Retrospective |
Milestone 3 | 40 Points | Database Design |
Milestone 4 | 40 Points | Unit Testing / Integration Testing (Subject to Change) |
Milestone 5 | 40 Points | Project Presentations |
Milestone 6 | 50 Points | Final Project Report and Product Functionality |
Note on Group Project Grade:
- Each milestone is submitted for the team as a whole, not as individuals. So every member of the team receives the same score. However, scores are adjusted for each individual’s contribution to the team effort. Your individual score for the group project will depend on your effort and involvement on the project.
- Your Grade = (sum of project milestone grades) * peer evaluation * individual participation
- Peer evaluation is based on your team members’ rating of your contribution. Individual participation is based on the instructor's observation of your Github commits and the instructor's assessment during Milestone 5.
All students of the University of Colorado at Boulder are responsible for knowing and adhering to the Academic Integrity Policy of this institution. Violations of this policy may include: cheating, plagiarism, aid of academic dishonesty, fabrication, lying, bribery, and threatening behavior. All incidents of academic misconduct shall be reported to the Honor Code Council (honor@colorado.edu; 303-735-2273). Students who are found to be in violation of the academic integrity policy will be subject to both academic sanctions from the faculty member and non-academic sanctions (including but not limited to university probation, suspension, or expulsion). Additional information regarding the Honor Code Policy can be found online and at the Honor Code Office.
In this class, each student is expected to submit his/her own original work for each assignment, whether it is a lab, quiz, problem set, exam, or other assignment, where the only exceptions to this policy will be noted by the instructor.
Violations of this plagiarism policy, the University Honor Code, and/or the Honor Code pledge shown below will be grounds for one or more of the following: grade reduction, a failing grade, and/or potentially other punitive academic actions, in accordance with the University of Colorado's policy on plagiarism and Honor Code.
Reuse and building upon ideas or code are major parts of modern software development. As a professional programmer you will never write anything from scratch. You are encouraged to learn from the work of your peers.
Please respect the terms of use and/or license of any code you find, and if you reimplement or duplicate an algorithm or code from elsewhere, credit the original source with an inline comment.
If you qualify for accommodations because of a disability, please submit to your professor a letter from Disability Services in a timely manner (for exam accommodations provide your letter at least one week prior to the exam) so that your needs can be addressed. Disability Services determines accommodations based on documented disabilities. Contact Disability Services at 303-492-8671 or by e-mail at dsinfo@colorado.edu.
If you have a temporary medical condition or injury, see Temporary Injuries guidelines under the Quick Links at the Disability Services Website and discuss your needs with your professor.
Campus policy regarding religious observances requires that faculty make every effort to deal reasonably and fairly with all students who, because of religious obligations, have conflicts with scheduled exams, assignments or required attendance.
In this class, every effort will be made to accommodate all students who, because of religious obligations, have conflicts with scheduled exams, assignments, or other required attendance, provided they notify the professor well in advance of the scheduled conflict. Whenever possible, students should notify faculty at least two weeks in advance of the conflict to request special accommodation.
See the Religious Observances Policy for full details.
The University of Colorado Boulder (CU-Boulder) is committed to maintaining a positive learning, working, and living environment. CU-Boulder will not tolerate acts of discrimination or harassment based upon Protected Classes or related retaliation against or by any employee or student. For purposes of this CU-Boulder policy, "Protected Classes" refers to race, color, national origin, sex, pregnancy, age, disability, creed, religion, sexual orientation, gender identity, gender expression, veteran status, political affiliation or political philosophy. Individuals who believe they have been discriminated against should contact the Office of Institutional Equity and Compliance (OIEC) at 303-492-2127 or the Office of Student Conduct and Conflict Resolution (OSC) at 303-492-5550. Information about the OIEC, the above referenced policies, and the campus resources available to assist individuals regarding discrimination or harassment can be found at the OIEC Website. The full Policy on Discrimination and Harassment contains additional information.
Students and faculty each have responsibility for maintaining an appropriate learning environment. Those who fail to adhere to such behavioral standards may be subject to discipline. Professional courtesy and sensitivity are especially important with respect to individuals and topics dealing with differences of race, color, culture, religion, creed, politics, veteran’s status, sexual orientation, gender, gender identity and gender expression, age, disability, and nationalities. Class rosters are provided to the instructor with the student's legal name. I will gladly honor your request to address you by an alternate name or gender pronoun. Please advise me of this preference early in the semester so that I may make appropriate changes to my records. For more information, see the Policies on Classroom Behavior and the Student Code of Conduct.
The instructor reserves the right to modify this syllabus as needed during the semester. Should any changes be necessary, the instructor will inform students of the change and post and updated copy of the syllabus to Moodle.