COP-2939 — Programming Capstone Syllabus

COP-2939 Course syllabus
 
  Resources  (examples and links)   Instructions for Project Instructions for Case Study  

Syllabus

Summer 2012

Course policies
Time & Place: Ref. No. 35052:  Orientation to be held on Thurssday 5/17/2012 at 4:00 PM, room DTEC-404, or by appointment
Instructor: Name:  Wayne Pollock
E-mail:  Internet:
Office & Phone:  DTEC–404, 253–7213
DM Office Hours:  Tuesday & Thursday, 5:30–7:20; or by appointment.
Contact Information
Instant Messenger ID (Yahoo Messenger):  waynepollocklive
Homepage URL:  http://www.hccfl.edu/pollock/
          Yahoo Messenger on-line status - click to chat or leave a message
Text: none

HCC bookstore on-line

Description: (This course is 3 credit hours long.)  The capstone course is designed for the student to demonstrate his/her knowledge and skills applicable to the degree core competencies and outcomes.  The course is designed as a project-based experience.  The student's project requirements will be designed in concern with his/her area of curriculum emphasis.

Students not attending the mandatory orientation meeting by the end of the first week of the term will be withdrawn from the course as a No Show, unless prior arrangements are made with the instructor.

Objectives: “Upon successful completion of the course the student will be able to:
  1. Demonstrate proficiency in performing data file activities.
  2. Demonstrate proficiency in performing analysis activities.
  3. Demonstrate proficiency in performing coding activities.”

Upon completion of this course, the student will be able to demonstrate proficiency in designing, developing, testing, and implementing a sophisticated computer program, one that requires substantial programming effort, and that draws on key technical areas covered in previously taken courses.

Prerequisite: Permission of the instructor.  (The student should be ready to graduate.  You must have successfully completed at least 45 hours of college credit, and been approved as eligible to take this course by the dean's office.  Contact the program manager, your instructor, or the dean, for details on enrollment.)  Students enrolled in a degree or college credit certificate program must complete all prerequisites.
Registration Procedure: The course is opened for each student individually, once they've been approved.  First, a student must complete all required coursework.  The capstone should be one of the last courses taken.  When ready to register, contact our program manager, Dr. Hubbard.  He in turn will ask that you contact the A.S. academic adviser, Ms. Livingston, who will need to review your transcript and confirm you are eligible.  The program manager will then increase the maximum enrollment on COP-2939 by one seat (or create the section, if you are the first student this term), so you can then register normally.  You should review this syllabus for COP-2939, especially the sections on the project and case study.  Then you will need to meet with the instructor during office hours in the first week of the term, to discuss the course and your specific project and case study.
Facilities: All assignments can be performed on any computer that includes the appropriate development software and utilities, for the language chosen for each student's project.  These include the HCC open computer lab on Dale Mabry, room DTEC 462.  (This will be discussed at the orientation session.)  Note that some software may be available to enrolled students free of charge, such as Microsoft Visual Studio IDE.

Students may need USB flash drives to save projects or submit them from HCC.

In order to use computers on campus, you will need your HCC student ID and password.  These can be obtained from HawkNet.  You can use HawkNet (WebAdvisor) or Florida Virutal Campus (Formerly FACTS.org) to obtain your final grade for the course.

Most college systems now (or will in the future) use a single sign-on user ID, known as HCC “NetID”.  Visit netid.hccfl.edu to register and to update your credentials.  (Your initial password is your uppercase first name initial, lowercase last name initial, and your seven digit student ID number.)  Note the quickest way to resolve login issues is the HCC Live Web Portal (hcclive.hccfl.edu).

Hawk Alert text messaging service allows you to receive important information regarding campus closures or emergencies.  You may also sign up for financial aid notifications and registration and payment deadlines.  This is a free service, although some fees may be applied by your cellular service provider or plan for text messages.  To sign up, or for more information, visit www.hccfl.edu/alerts/.

HCC DM Open Lab
Computers are located in the computer science department open lab in DTEC–462.  Lab hours are:

Dale Mabry campus open lab hours
Monday – Thursday8:00 AM to 10:00 PM
Friday 8:00 AM to 4:30 PM
Saturday 8:00 AM to 4:30 PM
Grading:
Grading Policy
Project proposal: 10 points
Analysis and Requirements (and high-level design): 15 points
Detailed design: 10 points
Unit test suite (and code skeleton): 15 points
Implementation (including documentation) and testing milestones:  25 points
Final project presentation: 5 points
Case Study (code review): 20 points

Grading scale:  A=90-100,   B=80-89,   C=70-79,   D=64-69,   F=0-63

It is expected that at least 70% of students will successfully pass the project with at least 70% or higher, and that 70% of students will successfully complete the case study with a 70% or higher.  (See Project and Case Study below for more details.)

Policies:
  • During the orientation meeting(s) with the student, a project, a development language, and a schedule of deliverables will be developed.  This may take several meetings.  In general, the student can pick the development language and tools most familiar to them, and suggest their own project.
  • Other than the initial orientation meeting, there are no set meeting times for this course.  At least one meeting is required to review each deliverable, at a time arranged by the student.
  • The student will submit each deliverable by email prior to the deliverable's review meeting.  Due to HCC email limitations, you must submit using the alternate email address as discussed below in submitting assignments.
  • Students can go to the open computer lab anytime they are open to work or to submit assignments.  Be sure you should leave yourself sufficient time to complete your work.  (So don't show up at 9:50 PM when the lab closes at 10:00 PM!)
  • Attendance is required for the orientation meeting(s), except with the permission of the instructor.
  • You must communicate with your instructor via email, at least twice a month to verify your continued enrollment in this class.  Students receiving federal financial aid may have to return some or all funds if they fail to follow this policy!
  • A student shall not, without my express authorization, make or receive any recording, including but not limited to audio and video recordings, of any class, co-curricular meeting, organizational meeting, or meeting with me.  Further you do not have my permission to post on the web or otherwise distribute my class lectures and other course materials.  (You can distribute freely any materials I make publicly available from the HCC (or the wpollock.com) website, without asking permission, provided you give me credit for the work and don't alter it.  Any other use will require expressly given permission.
  • You must abide by the HCC Acceptable Use Policy (AUP) for computers and services.  In particular, you must not run network scanners, or attempt to obtain administrator (“root”) privileges or otherwise disrupt HCC computers and services.
  • You must follow the academic honesty policy and the student code of conduct for HCC.  A second cheating offense will result in an F for the course, and your name will be turned over to the dean for further handling.  I take these matters very seriously.  You have been warned!
  • Communications Policy:  I will respond to your emails within 48 hours or two business days.  HCC policy is that grades can only be discussed in person or via email only if you use your assigned HCC HawkNet (Hawkmail365) email account.
  • If you are having difficulty with some aspect of your project please feel free to ask me about it (well before the due date).  You can send emails of questions and/or your work-in-progress, to receive feedback and suggestions.
  • All discussions and agreements reached between a student and their instruction must be documented in emails.  It is up to the student to ensure this happens.
  • No appointment is necessary to see me during my scheduled, on-campus office hours.  You can just walk-in.  You can make appointments for other times as long as I'm available. 
  • Occasionally my office hours will be canceled on short (or no) notice, for example if the dean calls me for a meeting.  Before driving out to campus just for my office hours, you can contact me the night before to make sure I still plan to be there.
  • Late Policies:  Late assignments (projects or exams) generally will not be accepted.  An assignment is late if not turned in by the due date and time agreed to with the student's project schedule.  Don't wait until the last minute to submit an assignment or project; if a problem arises, you may miss the due date.

    Late assignments will be accepted late only if you obtain the instructor's permission prior to the due date of the assignment, or for a documented serious medical reason.  All late assignments are subject to a late penalty of at least one letter grade (10%) regardless of the reason for the delay.

    Work later than one week will receive a more severe late penalty; very late assignments without adequate excuses will receive a grade of F (0).  However if you have a very good reason your instructor may waive any or all of the late penalty.  (Examples of good reasons include extended illness that prevents working, being out of town for work, or military service.  Remember documentation will be required.)

  • The danger of spreading flu or other disease requires some changes to normal policies.  HCC is implementing the recommendations for institutions of higher learning of the CDC.  (See www.cdc.gov/h1n1flu/guidance/ and www.flu.gov/ for guidance from the CDC.)  You won't need documentation if you miss class due to the flu.  (But if you think you have the flu, you should see a doctor as soon as you can.)  In the unlikely event of a school closure due to the flu, some plan to make up the missed work will be made.

    If you think you have the flu, stay home.  Do not come to HCC until 48 hours after your fever has broken.  People are infectious to others for a day or so before they have any symptoms.  Flu is spread by touching doorknobs, computer keyboards, railings on stairs, etc., that were touched by someone with the flu.  Avoid shaking hands; use the fist shake (touching of fists) if you must use a physical greeting.  The most effective way to prevent catching the flu is to wash your hands frequently, especially after touching something that was touched by others.  Avoid unnecessary touching of eyes, nose and mouth.  While not as good as properly washing hands, hand sanitizers have been installed throughout the campus; use them often.

Project: The goal of the capstone project is to demonstrate fluency with the tools of scholarship and professional practice in your field, an ability to independently plan and carry out a non-trivial piece of work, and an ability to present your work in written and oral formats.  The capstone project is expected to require at least 80 hours of effort over 6 to 8 weeks.  (The project should be completable by a single student working about 10-12 hours per week on this course, before the end of the term.)

Each project is different, but all will include a project proposal, detailed requirements, a clear design, unit test framework, and a quality implementation that includes security and safety (as needed, for example to protect personally identifiable information), robust features, best practices, and quality comments.  All projects must include a user interface of some sort.  All projects must include persistent storage (files and/or a database).

The student is expected to pick their own project, which must be approved by the faculty advisor.  If a student selects a topic that requires a substantial technology-related learning curve, (such as learning a new language or operating system, etc.), then that portion of the effort is over and above the effort expected for the capstone project itself.  The project can take many forms, depending on your interests.  It must be educational, have a research component, and relate to your major.  It should also have a clear focus and well-defined success criteria.  You should analyze a problem, research known solutions and products that address the problem, develop a design and a plan, choose some interesting or challenging portion of the problem to implement and test.  Examples include:

  • The communication layer of a multi-player network game
  • Parsing National Automated Clearinghouse Association (NACHA) electronic payment files
  • A GUI for database creating and maintenance
  • Implementing a standard game (but should be more complex than Minesweeper)
  • A defect tracking system
  • On-line testing system for multiple choice tests
  • There may be some problem in your work environment that needs attention, is related to your major, and is of particular interest to you.  Many students choose such projects.  One example is a process for remote collaboration in a geographically dispersed development team.  The project involved interviewing participants, evaluating and choosing tools, installing the tools and developing a process around them, and finally using the new process on an ongoing project.
  • There are many existing open-source projects that need developers.  You could contribute to some Mozilla project (e.g., Firefox), Apache project, Linux project, etc.

The outline of the capstone process (and list of deliverables) is:

  1. Each project will start with a realistic proposal.  You will need to negotiate the scope and goals of your project with your faculty advisor.  Other than the initial orientation during the first week of class, there is no set meeting time for this course.  You will need to arrange times to meet with your faculty advisor.
  2. Once done and approved, you will submit a detailed and complete written copy of the proposal requirements, list of deliverables (including this one), and a project timeline.  The detailed requirements should be in the form of use cases, rough database or XML schemas, narrative, or any combination of these, as long as the results are complete and fully detailed.  This deliverable should also include a high-level design.
  3. Next deliverable is your detailed design.  This should include an explanation of the research you did into existing products and alternative designs.  The design should include class diagrams (if your project is object-oriented and has classes), protocols (if any networking is used, such as for a client-server design), file formats and/or database schemas, and any other pertinent design documentation.  Since many project involve privacy concerns or regulated mandated security, do not forget these aspects in your design.  (A good design will also list potential changes, things that may change in the future.  A good design should allow such changes to be made relatively easily.)
  4. Next you translate your design into a skeleton program, which typically means a set of classes with stub public methods (methods with a correct signature/prototype and return statement, but no implementation at all).  The skeleton should include comments based on the design.
  5. Building a test database (or test data files) is next.  You will probably need some simple user interface (for example, a PHP web interface) to be able to examine and update your data.  This scaffolding code is in addition to your actual project code, as are any testing code and deployment scripts.
  6. Then build and deliver a unit test suite, based on the design and requirements.  For Java, use JUnit.  For C#, VB, or any .net language, use NUnit.  For other languages, find an appropriate testing framework (which you should have your faculty advisor approve).  Remember, the purpose of the unit tests is to ensure the implementation properly fulfills the design.  You need enough test cases for this.  (At this point, none of your tests are expected to pass.  You work on making each test pass, one at a time, in the implementation and testing phase.)  Note if your project is not a complete application, you will need to build some minimal application to exercise your project.
  7. After the initial unit tests are built, you enter the final phase of your project, the implementation and testing.  During this phase, you may decide you need to revise your design.  (You are required to keep your faculty advisor informed as to your progress and any design changes.)  You will also likely need to add to your test suite.  If your implementation is complicated, it will be split into two or more milestones, each of which is a deliverable.  During this phase, it is recommended (but won't be required) that you use some versioning control system (VCS) such as Subversion, RCS, git, etc.  (Such tools are often built into IDEs, or available as add-ons.)
  8. The final phase and deliverable is the presentation of your completed project.  This should include project documentation, and must include a deployment guide (so your instructor will know how to run your project).
Project Evaluation: Each deliverable (proposal, requirements, design, initial test suite, implementation milestones, and final project) will be evaluated separately and each will contribute to your overall grade.  Other evaluation criteria include completing deliverables on time, and a quality presentation of each deliverable.  It is expected that students already know what is expected for each deliverable (such as coding style), but if unsure you should speak with your instructor early enough to be able to succeed.
Case Study: The case study involves a detailed, professional-quality code review.  The code will be assigned to each student by the instructor, who will try to choose code written in a language familar to the student.  The student is expected to review the code, noting both positive and negative aspects, of areas such as
  • design,
  • comments (and other documentation),
  • code readability,
  • safety,
  • security,
  • performance,
  • test code,
  • logging,

Note all projects will have all of these aspects, but if (for example) logging is missing, and you feel that the code should include logging, you must make note of that in your review.  Likewise, if some objects are added to a collection, make sure those classes are correctly designed, with appropriate methods.  (In Java, that would be equals, hashCode, and toString, as well as correctly implementing all appropriate interfaces such as Comparable or Cloneable.)  Code should be designed with best practices, for the given implementation language.  For example, in most object-oriented languages, you should prefer to create immutable classes when appropriate.

Note each area has several points; for example, code readability includes the use of proper naming conventions (and no names you can't figure out, e.g. “RsFadCtl”), proper use of white-space, appropriately short methods, no commented-out code (that's what revision control systems such as CVS are for), no sign of copy-and-paste, no “magic numbers” in the code (use named constants instead), and so on.  Test code might include unit test suites, implementation testing (e.g., in Java, use of assert statements), etc.  Security includes appropriate testing of method arguments (pre-conditions), not trusting user data directly in an SQL statement, appropriate use of exceptions, correctly accessing files and other external resources, and so on.

Try a Google search for Code Review Checklist or similar searches, for more items to examine in your review.

You will present your review orally, using printouts, handouts, or projections of the code or presentations you create.  Submit your code review notes, before the oral presentation of your code review.

You may suggest the code to use for the review.  Some sites you can search that host open source projects include:

Submitting Assignments: Documentation deliverables should be PDF files when possible.  Make sure your instructor approves alternative formats (such as Visio files) before submitting.  Your code (plain text files) should be included as a zip archive.  (For example, you can simply zip your Visual Studio, Eclipse, or NetBeans project folder and submit that; but make sure it is completely self-contained, as often data sources are created by default elsewhere.)  The code should include project documentation, which must include deployment directions.

All assignments (except when noted) should be submitted by email to waynepollocklive@yahoo.com.  Please use a subject such as Capstone Project so I can tell which emails are submitted work.  Email your projects as zip attachments, as noted below.  Make sure you use my Yahoo.com email account, since HCC's mail server will not accept email with certain types of attachments.  Note: If you use Microsoft Outlook Express or a similar email program, please be aware that this program has a feature that automatically converts slash-slash (//) comments in your email to FILE://.  Make sure your source files are correct before you send the email!  If possible, use the text and not the HTML mode of your email program.

The HCC email server automatically accepts and silently discards email with certain types of attachments.  If you must send email to my non-Yahoo.com email account please avoid using any attachments, but especially zip files.  To send email with a .zip attachment you must first rename the file extension to .zap and then send the renamed file as an attachment.  However this method isn't always reliable.

You can send questions to , as long as your email doesn't include any zip attachments.  Please use the subject Programming Capstone Project Question so I can tell which emails are questions about the project (and not submissions).

Academic Calendar
HCC Academic Calendar:
Classes Begin: Monday  5/14/2012   (first class meeting, the orientation: Thursday 5/17/2012)
Add-Drop Ends: Friday   5/18/2012
Last Day to Withdraw:  Monday  7/9/2012
Classes End: Friday  8/10/2012
Grades Available:  Monday  8/13/2012 (from Florida Virutal Campus (Formerly FACTS.org) or HawkNet)
HCC is closed on: Sunday  5/27/2012 (Memorial Day),
Wednesday  7/4/2012 (Independence Day)

Request For Accommodation

If, to participate in this course, you require an accommodation due to a physical disability or learning impairment, you must contact the Office of Services to Students with Disabilities, Dale Mabry campus: Student Services Building (DSTU) Room 204, voice phone: (813) 259–6035,  TTD: (813) 253–7035,  FAX: (813) 253–7336.  Brandon campus: voice phone: (813) 253–7914.

HCC has a religious observance policy that accommodates the religious observance, practices, and beliefs of students.  Should students need to miss class or postpone examinations and assignments due to religious observances, they must notify their instructor at least one week prior to a religious observance.

 

Quotes on learning
Quotes:         Tell me and I'll listen.
Show me and I'll understand.
Involve me and I'll learn.
    — Lakota Indian saying
        Learning is not a spectator sport!     — Chickering & Gamson

 


 

Class Resources
Resources
Computer and Programming Overview Background information review     Soft Skills Discusses certifications, job interviewing tips, and required non-technical skills needed to find and keep a job
www.PurpleMath.com Good site for basic math and algebra tutorials (something all technology workers need to know)     careers.collegetoolkit.com Salary and other information on computer programming careers.  (See also Why Choose CSE?.)
Software Engineering Code of Ethics Joint ACM and IEEE code of ethics and professional conduct  (See also BCS Code of Conduct)     SWEBOK 2004 edition The Software Engineering Body Of Knowledge defines what every software engineer should know (design, testing, and similar topics)
ACM (Association for Computing Machinery) Well-recognized professional society with many benefits, especially for students     IEEE Computer Society Also a well-recognized professional society with many benefits
Programming Language Comparisons Describes how to solve a simple problem in a variety of programming languages     ISO 9000 An important standard for quality software development processes, required by many organizations throughout the world.  See also ISO 12207 (which is similar) and ISO 9126
TIOBE programming language popularity index The TIOBE index is based on the number of hits that are returned from the search query “+"<language> programming"” into the Google, Blogger, Wikipedia, YouTube, Baidu, Yahoo, Bing, and Amazon search engines     PYPL PopularitY of Programming Language index Google's PYPL index is based on the relative number of search queries for programming tutorials in each of the languages
CRC Cards The original paper describing the CRC design method.  (Another example.)     Object Categories A guide to finding objects
OOD Guide OOA and OOD Study guide     Design Patterns Tutorials, FAQs, and more
ootips.org A large collection of OO tips, techniques, and design patterns     Synopses of Design Patterns A brief description of many OOD patterns
www.UML.org The site for UML standards, tutorials, and more     Top 25 Errors A list of common security-related coding errors, from SANS.org and CWE.Mitre.org
CERT Secure Coding Standards Coding standards for many languages, that if followed, eliminate many vulnerabilities     Secure Coding CERT.org (of the Software Engineering Institute) secure coding home
NASA Software Safety Guidebook (PDF) Software Engineering best practices for safety critical systems     FindBugs Software that analysizes Java source code to find bugs (free/open source software from sourceforge.net)
SAMATE Reference Dataset (SRD) The SRD, provided by NIST.gov, provides a set of known bugs and flaws for a wide variety of languages, platforms, and compilers.  This allows consumers to evaluate tools and developers to test their methods.     Secure Coding Guidelines for Java Best security coding practices from Oracle  (See also The CERT Oracle Secure Coding Standard for Java, from CERT's SecureCoding site)
UML Resource Center - IBM UML tutorials     Dia Free diagramming tool (for UML and a lot more)
Violet UML Editor Originally written by Cay Horstman, this free Java application (a runnable jar file) is an excellent UML diagram editor     ArgoUML Free UML diagramming tool that can produce code from the diagrams.  (Not well maintained, but there is an Eclipse plug-in for it.)
UML Quick Reference (PDF) A excellent reference card showing one each of everything     UML Reference (PDF) A more complete UML reference
Testing Overview Review notes on software testing     Test Case Self-Assessment Attempt to generate sufficient test cases for a simple program
JUnit Testing Framework Software and tutorials on using JUnit Java unit testing software     NUnit Testing Framework A good .net unit testing framework, that can be integrated with Visual Studio (using the VS extension VisualNUnit), and supports all .net languages
csUnit Testing Framework Software and tutorials on using csUnit .net unit testing software, a lesser alternative to NUnit     cunit Testing Framework Software and tutorials on using cunit C unit testing software.  C language testing frameworks are rare, but if you choose to use the C programming language for your project, you need to use something.  (See also some cunit notes and examples I've put together.)
Database Concepts A brief overview of database concepts, and how to use databases in Java; see also this database overview for system administrators which includes a worked example of normalization)     Squirrel SQL Universial SQL client, useful to view, manage, test and build relational databases
Text Concepts An overview of text, fonts, encoding, Unicode, and related matters     Credit Card Processing A brief overview of e-commerce payment processing

[Valid RSS]

RSS iconXML iconRSS feed for this page

What is RSS?