CSCE 490 Syllabus¶
To contact me, which you should whenever you have a question or need any sort of help, do the following:
- Mention me @josemvidal in github.
- Email me at <email@example.com>. I check my email constantly.
- Check my Office Hours to see if you can drop by by office in Storey 2231. Or email me for an appointment.
I meet with each team individually in my office every other week. Meeting times will be set during the first week of classes. After that, you will find them in team meetings.
There are no scheduled lectures or labs. There will be a final demo/presentation at the end of the semester.
The Capstone Lab is located in the Story building in room 1210. The building and room will be open to you 24/7. You will need to USC ID to get into the lab (and into the building after hours) and only students registered for CSCE 490 can get into the lab.
The lab has 4 iMacs, 12 Windows PCs, and 12 Ubuntu Linux machines. You can login to any one of them with the same credentials you use for the Linux labs. You can use the lab for meetings and to work on the project.
We also have Androids and iPhones available to borrow, and a couple of tablets, Alexa dots, etc. You can borrow them if you need them for testing your app. Contact our sysadmin Ryan Austin to setup a time to pick up your phone. You will need to bring you USC ID and make sure you are enrolled in the class.
Our GitHub Organization is SCCapstone. Each team has its own private repo under that org. You will do all your work inside that repo (code, Issues, Wiki). If it is not on the repo it does not exist.
You will also get a GitHub team with the same name as your GitHub repo.
The team discussion is at
github.com/orgs/SCCapstone/teams/your-team-name. It will also appear
github.com after you login. The teacher and TA’s can see this
discussion but will not be monitoring it. If you have a question for us
just @-mention us (@josemvidal or @instructors to get both the professor
and the TAs) and we will be notified and will shortly respond. I also
recommend you setup your own private
We use the GitHub Team discussion @490fall19 for all announcements and class discussions. You are expected to keep up to date with the discussion. By default, GitHub will send you an email whenever a new post appears. Feel free to ask your questions in the team discussion.
Academic Bulletin Description¶
CSCE 490 - Capstone Computing Project I
Major team-based software design project to be undertaken in a student’s final year of study; project planning, software requirements analysis, design, and specification. Written reports and oral presentations in a technical setting.
Prerequisites: CSCE 240, 311, either ENGL 462 or 463
Note: Carolina Core Integrative Course, Computer Information
Carolina Core Integrative Course, Computer Science, BSCS
Carolina Core Integrative Course, Computer Engineering, BSE
Graduation with Leadership Distinction: Research
This is the first of a two-semester capstone course in the Department of Computer Science and Engineering for computer engineering, computer science, and computer information systems majors. It is intended to bring together and use many of the concepts and skills learned in other courses in the curriculum.
The official course prerequisites are CSCE 240 (Software Engineering), CSCE 311 (Operating Systems), and either ENGL 462 (Technical Writing) or 463 (Business Writing).
Project teams will be formed at the start of the semester, see team formation section. Each team will be responsible for developing the product requirements, designing the product, implementing it, and demonstrating that it works as required.
At the end of the semester each person will also be asked to submit a peer evaluation of his or her teammates and assess their contributions to the project.
The goals of the course are for you to:
- Learn to use new technologies such as software platforms, libraries, source control tools, or APIs, and use them in the development of a software application. 1
- Design an effective and appealing user interface for a software application using modern design tools. 2
- Gather and write requirements for a software application. 3
- Design and implement a computer-based system, consisting of an appropriate mix of software and possibly hardware components, using the techniques, skills, and tools of modern computer system development practice. 4
- Work effectively as part of a team. Make significant contributions to the team’s work. 5
There are 2 types of projects: client projects where the team builds an app for a client, and startup projects where the team builds their own app. All teams must have 4 or 5 students. We first form the startup teams, then the client teams. The team formation process is:
If you want to do a startup you find 4-5 students, come up with an idea for an app, and fill out the startup request form to tell me your startup proposal. Note that this is just a proposal. Your name can be in only one startup proposal.
I will approve some number of startup teams. The number depends on how many client projects we have. This year we have very few client projects, so most of the teams in the class will be startup projects. We will need at least 20 startup teams, maybe more.
If you want to do a client project, or if your startup project did not get chosen, then you will read all the client project proposals for 2019-20. You can email the client directly if they have questions.
I will post a form on this website where you will tell me your preferences over client projects (to appear). You will fill out that form to tell me your preferences over the client projects.
I run a program to find the allocation of client projects to students that maximizes happiness, under the constraint that all teams must be of 4 or 5 students. I will post the results on @490Fall19.
If you are looking for startup partners, you can post on our Github team: 490Fall19
The final grade for this class will be calculated as follows:
|Item||Percentage of Final Grade|
|M1: Form Teams||2%|
|M2: Personal Log||2%|
|M4: Project Description||2%|
|M5: Rough Designs||2%|
|M6: Detailed Design||10%|
|M9: Source Control||2%|
|M10: Proof of Concept||50%|
|M11: Presentation and Demo||10%|
|Personal Contribution||up to 100%|
|Firing a Team member||F if you are fired|
Most Milestones receive a team grade, meaning everyone in the team receives the same grade. Others are individual, everyone gets an individual grade.
There is no rounding. We floor all values. Remember that in math the set [a,b) includes all numbers n such that a <= n < b.
[90%, 100%] = A
[88%, 90%) = B+
[80%, 88%) = B
[78%, 80%) = C+
[70%, 78%) = C
[68%, 70%) = D+
[60%, 68%) = D
[0%, 60%) = F
Notice that your personal contribution counts for up to 100% of your final grade. Your personal contribution will be determined by me. I will be looking at:
- the peer evaluation done by all team members on all their team members, submitted at the end of the semester,
- your personal log,
- participation/attendance in our group meetings (in my office).
I will assign you a personal contribution grade of: Satisfactory, Poor, or Unacceptable. Typically, the vast majority of students are marked Satisfactory which means they receive the grade as calculated by the Grading formula. Students who score Poor or Unacceptable have their final grade adjusted accordingly, entirely at my discretion.
I expect all team members to make significant contributions to their team. Team members that do very little work will fail the class. In CSCE 492 I expect all team members to make a significant code contribution. Team members in CSCE 492 who do little or no programming will fail the class.
In other words, it is possible for a student to fail the class even when the student’s team project receives an A.
All the code that you write for this class must be in git and pushed to your team’s GitHub repo. You will turn in everything else in your GitHub wiki. In other words, everything you do will be in your github repo. If it is not there, you will not receive credit for it. The academic integrity section explains what happens if you use someone else’s GitHub account or commit code that you did not write.
Firing a team member¶
The steps to fire a team member are:
- Keep a record of the team member’s performance: git log, wiki edits, assigned Issues (all of which are automatically kept for you in github), meeting attendance, etc.
- Write up the complaint and bring it to me.
- Come up with some specific Issues (features) that should get done by the team member, within a 2-3 week period: the deadline.
- I give the student a Formal Warning, and tell them they need to get their assigned Issues done by the deadline.
- If no significant improvement happens within the deadline then the student fails the class. Yes, the student gets an F in the class.
I recommend you start the firing process early in the semester. If you have a new team member, that is, someone who is taking 492 before 490, that person knows that they are required to be contributed code commits by the end of January. If they are not contributing code by the end of January then you should start the firing procedure as they will likely not contribute anything to your project.
If you don’t have the time to devote to this class this semester I recommend you drop it. This class takes a lot of time. It is better to graduate a year later than to get an F and graduate a year later anyway.
Cheating is giving or accepting unauthorized aid on any assignment, test, or program, not documenting outside sources of information, or falsifying work records. You are expected to know and abide by the “Rule of Academic Responsibility” found in the Carolina Community Student Handbook and Policy Guide. For this class you may work together and help each other to understand course concepts and to learn how to do specific tasks; but project deliverables are to be either your own individual work or the work of your own team as appropriate.
Cheating on a test or copying someone else’s work, will result in a 0 for the work, possibly a grade of F in the course, and, in accordance with University policy, may be referred to the University Committee for Academic Responsibility and may result in expulsion from the University. To avoid academic espionage be careful how you dispose of printed copies of your work and who you show your work to, do not leave disks or thumb drives with copies of your work lying around, and never give anyone else access to you account for any reason.
In this class using someone else’s github account, or doing a
commit using someone else’s identity, are both considered forms of
cheating. This offense will be treated exactly the same as taking a test
for someone else. If it is done with the consent of the other person
then both people are equally at fault. All cases will result in a formal
report to the Office of Academic
Integrity, which might lead
to expulsion from USC.
Committing code that was written by someone else is considered
plagiarism and will also be reported to the Office of Academic
Integrity. Of course, you can use third-party libraries and commit them
into your repo if needed, but always make sure those files have the
original author’s name and license (they almost always do). If you do
need to paste in someone else’s code into your repo then make sure your
comments in the code make it clear where the code comes from and who
wrote it. Also, try to add all third-party code in separate commits,
--author= option to give credit to the original author.
When using bits of code from stackoverflow I recommend you add a comment with the URL to the original webpage. It gives credit to the original author. It will also help you later on when you realize that you do need to actually understand how that bit of code does its magic.
Late Work/Make-up Policy¶
No late or make-up work is accepted. All assignments (Milestones) are due by the deadline as posted on this website, on the first day of classes. Work incrementally. Turn in whatever you have by the deadline. User error does not qualify you for any kind of of postponement.
Incompletes will be granted only in accordance with university policy.
This is a project class. Each team of 4-5 students meets with the instructor regularly to receive direct feedback on their progress, and receive any help if needed. The instructor and TAs will also provide feedback on the students’ work online, in GitHub.
You will received feedback on the content and quality of your work via GitHub Issues posted by the teacher and the TAs. We will post feature requests, but reports, and general feedback on the GitHub Issues for your repo. See the Teamwork lecture for more details.
Grades will never be posted on GitHub. You will receive all your grades in emails sent to your @email.sc.edu account.
Diversity and Inclusion¶
The university is committed to a campus environment that is inclusive, safe, and respectful for all persons, and one that fully embraces the Carolinian Creed. To that end, all course activities will be conducted in an atmosphere of friendly participation and interaction among colleagues, recognizing and appreciating the unique experiences, background, and point of view each student brings. You are expected at all times to apply the highest academic standards to this course and to treat others with dignity and respect.
Expectations of the Instructor¶
I am expected to facilitate learning, answer questions appropriately, be fair and objective in grading, provide timely and useful feedback on assignments, maintain adequate office hours, and treat you as I would like to be treated.