ACS Summer Software Engineering Internship, 2004
ACS Technology Center, Southwestern University, Georgetown, TX
Preliminary Syllabus
**Please note that this syllabus is subject to change. In particular,
material assigned and covered may vary depending on the needs of the students
and the project. Please consult the online version in the ACS Course Delivery
System (http://cds.colleges.org) for the latest version.**
Goals: The objective of this internship is to allow computer
science students to gain real-world experience in designing and constructing
software that will be used by the Associated Colleges of the South. Students
will also learn the Extreme Programming Method (XP) of software enginereing.
Hours: Interns are required to work 40 hours per week, on
a regular schedule, e.g., 8 AM to 5 PM, with one hour for lunch.
Schedule
Week 1: May 31-June 4, 2004
This week will consist of welcome, orientation and introduction to the curriculum
and project of the internship.
Faculty:
- Eric Jansson, Assistant Director for Systems and Development, ACS Technology
Center
- Rebecca Davis, Assistant Director for Instructional Technology, ACS
Technology Center
Sunday, May 30, 2004
1-3 PM: Interns Arrive at Southwestern University
6 PM: Group Welcome Dinner
Monday, May 31, 2004
9 AM-12 PM: Intern Orientation
Afternoon: Team Building
Tuesday, June 1-Friday, June 4: Eric Jansson
- Introduction to Project
- Review requirements, use cases, deliverables
- Introduction to FEDORA
- Architecture overview
- API
- Subsystem concepts
- Authentication
- Flow control
- Metadata and standards
- Revision control and using CVS (command line)
- HTTP basics
- Protocol
- GET/PUT conversations
- Request/response parameters / environmental variables
- Cookies
- CGI processing basics
- Passing data from page to page
- HTML basics
- Using CSS
- Page layout conventions
- Good design principles
- Standards and accessibility
- XP principles and values
Week 2: June 7-11
Faculty: Prof. Michael Higgs, Austin College
During this week, we begin to study XP development practices with labs and
train the interns in required technologies. In addition, we will examine web-application
development (starting with servlets, moving towards struts). We will also consider
the day in the life of an XP developer.
- jBuilder Enterprise
- XP overview
- XP practices
- Pairwise programming (lab practice)
- Refactoring (lab practice)
- Spikes (throw away prototypes)
- XP practices focus
- Testing First
- Introduction to junit, test driven development
- Junit extensions
- Using httpunit to test client pages
- Web-based application development
- HTTP Preview
- Servlets
- JSP
- XP daily development
- Possible Spikes
- Authentication
- Creating and managing execution logs
- Communicating with FEDORA
- Manipulating images with ImageMagik API
- Baby CMS
- Introduction to Struts
Week 3: June 14-18:
Faculty, Prof. Paula Gabbert, Furman University
During this week we will study general/common SE concepts (such as testing,
estimating, project management, modeling). We also examine how these concepts
are manifested in an XP project. Afternoons are likely used completely for advancing
the current project (planning, making story cards, estimating task, high level
conceptual design and modeling). The team should start each development afternoon
with a standup meeting, reporting status and assigning tasks (including spikes)
to pairs. Customer representation will be provided during the afternoon sessions
only.
- Project Management
- Typical project scheduling
- XP scheduling
- Our first release planning meeting
- Our first iteration planning meeting
- Modeling in UML,
- Use-case diagrams
- Static class diagrams
- System/package diagrams
- Object collaboration diagrams
- Requirements analysis
- Best practices
- Creating XP stories from the project vision document
- Classical/General Testing Concepts
- Unit testing (clear-box)
- Coverage
- Functional testing (black-box)
- Example labs in Java
- Writing good tests
- Other SE Methodologies
- Big-bang
- Incremental/spiral
- Other emerging Agile methods (student lead presentations)
- Software Metrics
- XP Practices Focus
- Release planning
- Iteration planning
- Story cards—pulling requirements and creating cards
- Project (afternoons): Release 1, Iteration 1
- Develop High Level Conceptual Design (with UML models)
- Prototype web client with dead/example pages
- Develop story cards and initial task cards for release 1, iteration
1
- Possibly Implement basic subsystem frameworks
- Possible Spikes
- Authentication
- Creating and managing execution logs
- Communicating with fedora
- Manipulating images with ImageMagik API
- Baby CMS
Week 4: June 21-25
Faculty: Michael Higgs
During this week, we will spend afternoons advancing the current project using
XP practices. We will practice proper compliance to the XP approach. In addition,
we will study web-application development. We will experience real struts development.
We will also focus on server side testing, XP functional testing, and develop
our project’s regression suite. Finally, we will spend some time refining
the page layout strategy and refine and steer the overall system design. Customer
representation will be provided during the afternoon sessions only.
- Review/Reinforce XP practices
- Server Side Testing with Cactus
- XP acceptance and regression testing
- More Web Application
- More Time with Struts
- Introduction to SOAP and/or Java RMI
- Apache Axis development
- XML and XSLT (if needed)
- Webpage layout
- frames
- css
- using Apache Tiles
- Project (afternoons): Release 1, Iteration 2
Week 5: June 28-July 2
Faculty: Prof. Don Schwartz, Millsaps College
During this week, we focus on relational database basics, and we leverage
the database in our current project. Customer representation will be provided
during the afternoon sessions only.
- Relational Database Concepts, E/R modeling with UML
- Table Normalization and Design
- SQL
- Fedora DB constraints
- ODBC/JDBC
- MySQL and phpMySQLAdmin
- Project (afternoons): Release 1, Iteration 3 (completing release 1)
Week 6: July 6-9
Project Work
Week 7: July 12-16
Project Work
Week 8: July 19-23
Project Work
Week 9: July 26-30
Project Work
July 30: Internship Wrap-Up Meeting
July 31
9-11 AM: Interns Check-Out