Resources (examples and links) | Instructions for Project | Instructions for Case Study |
Time & Place: | Ref. No. 36116: 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 View my Office Hours.
Skype
ID: wpollock@hccfl.edu
Homepage URL:
https://wpollock.com/
|
||||||||||||||||||||
Text: | John F. Dooley,
Software Development, Design and Coding, second edition,
© Nov. 27, 2017, by Apress.
ISBN-13 # 978-1-4842-3152-4
Please read the entire textbook and refer to it frequently as you develop your project and work on your case study. | ||||||||||||||||||||
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.”
All Students must access the course in Canvas and complete the Week 1 (Module 0) assignments/activities by 8/26/2020. Failure to show attendance (login to course) and participation (completion of assignments/activities) in the course by this date will result in withdrawal for non-attendance. A student will lose all tuition and fees paid for a class from which they are withdrawn for non-attendance. The course orientation will introduce you to the course. This is a distance learning course. There are no course meetings scheduled. This course includes up to three on-line video or telephone meetings during the term, usually via Zoom. There is also a mandatory demonstration meeting near the end of the term, usually via Zoom. This course also includes content and communication using Canvas. | ||||||||||||||||||||
Objectives: | “Upon successful completion of the course the student will be able to:
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.
You can use HawkNet (WebAdvisor) to obtain your final grade for the course. You can use your assigned Hawkmail (Hawkmail365) email address if you wish to discuss your grades via email. (Note, it may be possible to setup your Hawkmail account to forward all received emails to some outside email account; but you still must send mail from Hawkmail to discuss grades.) Most college systems 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).
The college provides wireless network connections for students and guests
on Dale Mabry campus.
For students, select the network
“ 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/hawkalert/. HCC's Student Assistance Program (SAP) offers resources tailored to student life, providing you with the right tools to help you through some of life's toughest challenges. The college has contracted Baycare Health Management to provide free, professional, confidential counseling by telephone and in person. A wide range of topics may be addressed through this program, including mental health counseling, budgeting, and financial concerns. Please call 800-878-5470 or send email to baycaresap@baycare.org for further information.
HCC DM Open Lab
(Note: Lab technicians (“Lab Techs”) are not teaching assistants or tutors, and shouldn't be expected to help you with your coursework.) Rules for Using HCC Facilities
| ||||||||||||||||||||
Grading: |
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: |
| ||||||||||||||||||||
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. Note that a simple CRUD application (that is, a user-interface wrapped around some data) is generally not acceptable as a project. Example of such unacceptable projects include a program where a user clicks a button or link to view some information such as a zip-code or area-code finder, or an asset tracking system. Examples of acceptable projects (feel free to use one of these) include:
The final project will comprise a functioning original computer software project of significant scope and complexity. It shall draw upon key technical areas covered in previously taken courses. Various deliverables (milestones) will be required during the design and development of this project. These are completely described in each of the assignment directions. While object-oriented projects are preferred, you may attempt a non-OO project with your instructor's permission. The deliverables' directions attempt to cater to both styles of software. Briefly, these deliverables include:
| ||||||||||||||||||||
Project Evaluation: | Each deliverable will be evaluated separately and each will contribute to your overall grade. Other evaluation criteria include completing deliverables on time. 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 of several hundred lines of code.
Students should take some time to find source code (not written by
them) they wish to review.
(This is a great opportunity to participate in open source development;
You can review some code found on GitHub (or elsewhere), and if you find
any improvements, you can submit them as pull-requests.)
Some sites you can search that host open source projects include:
If a student fails to find code on their own to review, then code will be assigned by the instructor, who will try to choose code written in a language familiar to the student. The student is expected to review the code, noting both positive and negative aspects, of areas such as
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
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 Try a Google search for Code Review Checklist or similar searches, for more items to examine in your review. Several code review links are included in the code review resources. You will present your review orally, using printouts, handouts, or projections of the code or presentations you create. This will be done in-person or via Zoom. Submit your code review notes, before the oral presentation of your code review. | ||||||||||||||||||||
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 are due on the dates indicated in the course schedule posted in Canvas. You must submit your assignments using the assignment drop box posted under the Assignments tool. Assignments must be submitted using a drop box (not emailed) for grade consideration. 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). |
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) |
Dropping or withdrawing may have an impact on financial aid, veteran’s benefits, or international student visa status. Students are encouraged to consult with a financial aid, the VA certifying official, or the international student advisor, as appropriate, prior to dropping or withdrawing from class.
Any student whose disability falls within the American Disabilities Act (ADA) and requires accommodations should contact the Office of Services for Students with Disabilities (OSSD). The OSSD works with students and faculty members to identify reasonable accommodations and academic adjustments. If you anticipate or experience any barriers to learning in your courses, please discuss your concerns with your instructor and with the OSSD office on your campus to develop an implementation plan together.
We highly encourage you to submit your accommodation requests within the first two weeks of the semester because the accommodations are not applied retroactively. With that in mind, you are encouraged to seek assistance from the OSSD as soon as possible, and to present any accommodations/academic adjustment letter you receive to your instructor immediately upon receiving it.
Contact information:
Website: Office of Services to Students with Disabilities
Location:
Dale Mabry campus: Student Services Building (DSTU) Room 102
Voice phone: (813) 259–6035
You can directly contact Dale Mabry OSSD staff via email: Veronica Lugo at vlugo2@hccfl.edu or Ana Barrera at abarrera2@hccfl.edu.
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.
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 102, voice phone: (813) 259–6035, FAX: (813) 253–7336.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: | “
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 |
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 | ||
Open Source Licenses | A comparison, listing, and description of most licenses from Open Source Initiative See also ChooseALicense.com and tldrlegal.com, for “at-a-glance” license info | GNU/FSF Open Source License Comparison | A comparison of many licenses to the GNU GPL, including the CDDL used by OpenSolaris | ||
Articles on open source licenses from ACM Queue Magazine | From the May 2004 Issue: There's No Such Thing as a Free (Software) Lunch, Is Open Source Right for You?, and Open Source to the Core | FLOSS Chart 1 | Compares licenses from free as in beer viewpoint. | ||
www.openhub.net | FLOSS project evaluation; shows codebase statistics, number of contributors, reviews, and other information you can use to compare and evaluate projects (formerly, www.ohloh.net) | FLOSS Chart 2 | Compares licenses from free as in freedom viewpoint. | ||
Oasis Open Standards | Certifies some standards as open (Other sources of open standards include RFCs, ANSI, and ISO) | ||||
A Concise Introduction to Free and Open Source Software | An overview and history | fairuse.stanford.edu | A good resource for copyright and licensing issues (For example, this Copyright Overview and FAQ) | ||
Five Things Every Software Developer Should Know About Intellectual Property | A short overview | Copyright quiz | Informative and fun, and includes the answers | ||
User Guide to EULAs | A consumer guide from the EFF (See also this EULA cautionary video) | Copyright Crash Course | An overview of copyright and licensing | ||
Git home | The Git version control system (See also the excellent online “Pro Git” book) | Github.com | Easy to use public (or private) Git repository (See also GitHub for Windows) | ||
Sample Git repo visualization and log | A demo showing a small repo that had two branched (which were merged) | Git for beginners: The definitive practical guide | A nice collection of how-to information from StackOverflow.com | ||
Git From the Ground Up (PDF) | A short, readable introduction to Git concepts (See also the Git tutorial man page) | Everyday Git with 20 Commands or so | Brief explanations and examples of the most used Git commands | ||
Git Overview | YouTube videos (four of them) teaching VCS | GitHub Overview | More YouTube videos for GitHub and Git basics | ||
Use Case Tutorial | An overview of creating use cases | SRS template and
sample (PDF) As a Word document |
A template for requirements docs, designed by the IEEE, with no graphics (downloaded from www.cs.gmu.edu) | ||
Sample Requirements Documentation | A sample software requirements specification (SRS document; download from AlvinAlexander.com) | Sample Requirements Documentation (2) | A sample software requirements specification (SRS document (download from www.student.cs.uwaterloo.ca) | ||
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 | Software Architecture Guide | A good overview of the system architecture (high-level) design (See also Common Software Architectural Patterns) | ||
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 | ||
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 | ||
Top 25 Errors | A list of common security-related coding errors, from SANS.org and CWE.Mitre.org | ||||
NASA Software Safety Guidebook (PDF) | Software Engineering best practices for safety critical systems | FindBugs | Software that analyzes 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) | ||
Software Engineering (Wikipedia) | This article discusses certifications and legal requirements | SWEBOK | The Software Engineering Body Of Knowledge defines what every software engineer should know (design, testing, and similar topics) | ||
Professional Software Engineering Exam information (PDF) | The NCEES (the National Council of Examiners for Engineering and Surveying) will start exams in 4/2013 for software engineers; some states will require practitioners to hold this license (10 so far) (Software PE exam study materials are available from the IEEE) | ISO 9000 (Wikipedia) | This standard refers to the process of creating software (certified compliance is required for software sold in the European Union) (For project management the most widely recognized certification is Project Management Professional (PMP)) | ||
ISO 12207 (Wikipedia) | A popular ISO standard for software lifecycle processes | IEEE computer Society CSDA certification | Based on the SEBOK, the Certified Software Development Associate (or follow-up CSDP) certification is currently the best way to prove your competency | ||
Bad design and its consequences | Story about Toyota's killer firmware (See also ComputingCases.org for other case studies) | Therac-25 | The story of the deadly design flaws in hospital radiation equipment | ||
Code review guidelines | Good overview, from www.codeproject.com | Four Ways to a Practical Code Review | Describes the process of code reviews | ||
Security code reviews | A free online book (PDF) from owasp.org | Java Code Review Checklist | An article from java.dzone.com | ||
Code review example | A part of a real code review | Peer Code Review Tips | Some great tips from IBM Developerworks | ||
Formal code review | A YouTube video showing a part of a formal, face-to-face code review | Code Review Checklist for Java (PDF) | A good starting point | ||
Testing Overview | Review notes on software testing | Test Case Self-Assessment | Attempt to generate sufficient test cases for a simple program | ||
Debug Strategy | Excellent advice from Patricia Shanahan on debugging | 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.) | ||
JUnit.org | Junit Testing | JUnit API Java docs | Online JavaDocs for JUnit API | ||
www.vogella.com JUnit Tutorial | A pretty good JUnit Tutorial | JUnit FAQ | Almost a complete tutorial | ||
TDD with Python | A simple test-driven development with Python tutorial | TDD with Java | Some info on test-driven development in Java with |
||
TDD walk-through for realistic Java task | Using TDD to design and implement Java code that can parse the query-string part of a URL | ||||
Selenium | A tool to automate web browsers via scripts (useful for testing web based applications) | Code Coverage Tools | Various tools to show how much of your code was covered during Java unit tests | ||
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 | ||
I18N (Internationalization Tutorial from Sun) | Tutorial on using I18N, Locales, and Resource Bundles | ISO-216 international paper sizes | A clear explanation of A4 and other international standard paper sizes | ||
ISO-639 | English (and French) language names, and the standard 2 and 3 letter codes | ISO-3166 Country Codes | The official list of two and three letter country codes, used in locales | ||
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets | Readable post on JoelOnSoftware.com | Markdown | A style of text that can be easily converted to attractive HTML | ||
Text Concepts | An overview of text, fonts, encoding, Unicode, and related matters | Credit Card Processing | A brief overview of e-commerce payment processing |