CSCE 492 Syllabus

Instructor: Jose M Vidal  <>
Contact Information:

  1. Email me at I check my email constantly.
  2. Also use that address for Instant Messaging (IM), or a Google+ Hangout. IM is often much better than email for solving issues.
  3. Check my Office Hours to see if you can drop by by office in SWGN 3A51. Or email me for an appointment.
  4. Call or send me a Text message at (803) 572-4116.

Text: There is no required textbook for this class. But, see the textbook recommendations under my videos.

Course URL:

Meeting Time/Room:

We are scheduled for

  • MWF: 5:00 pm - 5:50 pm

but I will instead be meeting with each group individually in my office.

Description and Goals

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) (CSCE 490) or consent of the instructor and co-requisite ENCP 481 (ENCP 491). Informally, we assume that you have completed most of the curriculum and expect to graduate this academic year.

The goals of the course are for you to:

  1. Pursue an independent project under time and resource constraints;
  2. Refine a topic, formulate an approach, and solve a significant technical problem to achieve the project goal;
  3. Organize and work as a team to design and accomplish an independent project under time and design constraints;.
  4. Design 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.
  5. Develop effective written and oral skills to communicate among team members as well as with outsiders in a real-world styled environment;

Group presentations will be given to show and discuss the project requirements, product prototypes, and the final and intermediate project results. Presentations may be at USC or elsewhere, as appropriate for the project. A public poster session and project demos are tentatively planned for the end of the semester.

Project teams will be formed very early in the semester. 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 final grade for this class will be calculated as follows:

Item Percentage of Final Grade
M12: Testing 5%
M2: Personal Log 2%
M13: Beta Release 3%
M14: Release Candidate 1 5%
M15: Quality Assurance 5%
M16: 1.0 Release 65%
M17: Website and Video 10%
M18: Final Demo 5%
Personal Contribution up to 100%
Firing a Team member F if you are fired

Your personal contribution to the project will be determined by

  1. the peer evaluation done by all team members on all their team members, submitted at the end of the semester
  2. your personal log
  3. your git log
  4. participation/attendance in our group meetings (in my office)

Note that if your personal contribution to the project is minimal then your grade will reflect that, regardless of what the project itself receives. Thus, it is possible for a student to fail the class even when the students' project receives an A.

But, what if you want to do pair programming? In pair programming one person "drives" (types) while the other looks over, and they take turns every hour or so. Do that. The person who is driving gets the commit. Some studies have shown that two people pair programming produce more code than if each one of them worked alone.

In other words, if your git log does not show significant code contributions you will fail 492. Also note that doing the work for someone else, that is, committing code under someone else's name will also result in a formal report to the Office of Academic Integrity, which might lead to expulsion from USC. I consider committing code under someone else's name equivalent to taking a test under someone else's name.

Firing a team member

The steps to fire a team member are:

  1. 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.
  2. Write up the complaint and bring it to me
  3. I give the student a Formal Warning. We usually setup some specific tasks/Issues that should get done by the team member
  4. If no significant improvement happens within a pre-set deadline (2-3 weeks) then the student fails the class. Yes, the student gets an F in the class.

I recommend you start the firing process in January. 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.

Academic Integrity

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 is considered cheating. That is, making a git commit, or pull request, or editing a wiki page, etc., using someone else's account 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.