Syllabus for Roster(s):

  • 15Sp CS 3240-001 (ENGR)
  • 15Sp CS 3240-101 (ENGR)
  • 15Sp CS 3240-102 (ENGR)
In the UVaCollab course site:   CS3240 (S15)

Full Syllabus

CS3240, Advanced Software Development
Beginning of Course Memo for Spring 2015

Instructor:  Dr. Tom Horton: horton.uva@gmail.com. Rice Hall 402.    982-2217.
Course website:  See the Collab site "CS3240 (S15)"
Office Hours:  

  • Mon., 1-2pm
  • Tue., 10:30-11:30
  • Wed., 1:30-2:30pm
  • Thu., 4:30-5pm
  • Fri., 1:30-2:30pm

TAs:  Grad TA: Qingyun Wu. Undergrad TAs: David Amin, Aditi Chaudhry, Peter Shao, Nate Rathjen, Apurva Kasanagottu, Jeff Cannon.
Info about office hours and TAs will be posted on the Collab site and on Piazza

Prerequisite: CS2150 with a C- or better or equivalent. We’ll assume you have mastered the material in the courses leading up to CS2150 also, which includes software developments skills in Java and C++.

Course Description: Analyzes modern software engineering practice for multi-person projects; methods for requirements specification, design, implementation, verification, and maintenance of large software systems; advanced software development techniques and large project management approaches; project planning, scheduling, resource management, accounting, configuration control, and documentation.

Course Objectives: Upon completion of this course students will:

  1. Develop an understanding of how to specify, design, and implement a complex software entity that involves many aspects of modern software systems. 
  2. Master a number of modern tools and a number of difficult technical fields including user interface design, distributed architecture development, and concurrent programming. 
  3. Acquire experience of working on a large software system as a member of a team working on system development and as a member of a team that has to interact with other teams and customer representatives.

Textbooks:

  1. Introduction to Software Engineering, by Laurie Williams. Available as Kindle book for $9.99 at http://goo.gl/k6IcmZ
  2. Essential Software Engineering.  By Frank Tsui and Orlando Karam. (Free via Virgo.)
  3. Python textbooks, also available free via Virgo. 
  4. Tutorials and other readings on the class Web site.

Course Topics:

The topics to be covered in the course include:

  • Software quality, including testing and inspections
  • Project management, scheduling, planning, with an emphasis on the Scrum agile method
  • Requirements elicitation, analysis and specification
  • Architecture and design principles, when an emphasis on object-oriented design
  • Security in the development of software applications
  • Programming and team-based development practices, including the following:
    • Python and related libraries.
    • Basic web applications using Django
    • Configuration management using git and GitHub
    • Some basic database skills using SQL, especially with Python apps
    • Testing and coverage tools
    • (Possibly) Multithreaded programming.

SW Development Environment: Python 3.4 on any platform for most individual development. You may be asked to use (perhaps deploying to) Ubuntu 14.04 Desktop. (Access to servers running this will be provided.)  Some basic shell scripting may be needed.

Labs:   All students in CS340 must be registered in one of the two labs.

  • Weekly attendance at the lab you are registered for is required.
  • Bringing your own laptop to lab with a working development environment is required.

Some weeks lab will focus on development skills and programming. Later in the term they will focus on the project. Sometimes there will be something to turn in at the end of lab or as a post-lab shortly afterwards. Later labs may require your project team to give short presentation to a TA.

Assignments, Exams, Grading, etc.:

There are assignments where much of the work is team-work -- if a student has very bad grades on individual assignments and also poor participation scores on team projects, this may be taken into account when assigning a final grade.

  • Exam 1 (14%):  Thursday, Feb. 19
  • Exam 2 (21%):  Monday, May 4. 9am-12noon (Final exam period)
  • On-line Quizzes (5%):  If these don’t happen enough, this fraction will be added to the exams.
  • Individual HWs (15%):
  • Project (45%):  Includes intermediate deliverables, presentations, demonstrations, final system, and team participation.  (Weights will be announced.)
  • Class participation (up to 5% penalty):
    There may be in-class activities (some announced in advance, some not). You may lose up to 5% if you do not attend class and give your full participation in these activities. If you know you must miss class, I may take this into account if let me know in advance that you'll miss and why.

Project Teams:  The project to be undertaken is a team project. Some details about teams include:

·       Normal team size is four. Team sizes of three or five might arise. Expectations will be adjusted to reflect available person power.

·       You will be assigned to a team. Teams may be paired up to work as a team (i.e. two teams).

·       Once team work begins (probably about week 6), you will remain in the same team for the entire semester unless you are asked to change.

·       In general, all team members will receive the same grade for graded assignments. However, team members will evaluate their peers and any student who appears not be contributing may be penalized.

You are expected to work as a member of your team in this course and cooperate with your colleagues.  Cooperation means attending team meetings, completing your assignments properly and on time, letting your team know if you will be out of town, responding to e-mail from your team, and so on. If there is a lack of cooperation by any team member, it must be brought to the attention of the instructor as soon as it happens. If the lack of cooperation is serious, the offending team member’s semester grade will be lowered.

Rice 340:   Rice Hall, Room 340, is a limited access computer-lab classroom. There will be times when it will be available for CS3240 students (perhaps others) for team meetings etc.

Honor Policy:

The School of Engineering and Applied Science relies upon and cherishes its community of trust. We firmly endorse, uphold, and embrace the University’s Honor principle that students will not lie, cheat, or steal, nor shall they tolerate those who do. We recognize that even one honor infraction can destroy an exemplary reputation that has taken years to build. Acting in a manner consistent with the principles of honor will benefit every member of the community both while enrolled in the Engineering School and in the future.

Students are expected to be familiar with the university honor code, including the section on academic fraud (http://www.student.virginia.edu/~honor/proc/fraud.html).

Each assignment will describe allowed collaborations, and deviations from these will be considered Honor violations. If you have questions on what is allowable, ask! Unless otherwise noted, exams and individual assignments will be considered pledged that you have neither given nor received help. (Among other things, this mean that you are not allowed to describe problems on an exam to a student who has not taken it yet. You are not allowed to show exam papers to another student or view another student's exam papers while working on an exam.) Send, receiving or otherwise copying electronic files that are part of course assignments are not allowed collaborations (except for those explicitly allowed in assignment instructions).

Assignments or exams where honor infractions or prohibited collaborations occur will receive a zero grade for that entire assignment or exam. Such infractions will also be submitted to the Honor Committee if that is appropriate.

SDAC:

If you have been identified as an SDAC (formerly LNEC) student, please let the Center know you are taking this class. If you suspect you should be an SDAC student, please schedule an appointment with them for an evaluation. I happily and discretely provide the recommended accommodations for those students identified by the SDAC. Please contact me one week before an exam so we can make accommodations.

Research:

Your class work might be used for research purposes. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers. Any student who wishes to opt out can contact the instructor or TA to do so after final grades have been issued. This has no impact on your grade in any manner.