CS122B is a project course that has you develop an Internet-accessible database system. This quarter, the project will be the development and deployment of FabFlixs, a Web site with an attendant database and associated software, that allows customers to purchase DVDs of films. The FabFlixs Project document describes the project in detail. This class has no in-lecture exams; your grade is determined from how well you do on the project.
Lecture is where we present an overview of each assignment, information you need to get started installing and using the tools needed for the project, and information about database design and use relevant to FabFlixs development. It will be held as needed; see the Course Calendar for details. During some lecture times ther will be additional office hours instead of a lecture; again, see the Course Calendar for details. There are no discussion or lab sections.
The course TA, Setareh Rafatirad, will hold office hours, to be settled upon by week two of the quarter, to assist you with your project work. He will also, along with the instructor, conduct the end of phase demonstrations (discussed below). Setareh also has responsibility for the correct and timely recording of your assignment scores.
To be enrolled in CS122B, you must have taken CS122A or the cross-listed course EECS116 or "the equivalent." "The equivalent" is a course from another institution that was granted transfer subject credit here, or workplace or other experience that closely matches the material covered in CS122A. If you are currently enrolled in CS122B and have not completed a prerequisite course, contact the instructor right away and be prepared to demonstrate that you have gained the prerequisite knowledge through some other means. If you have not, you will not be allowed to remain enrolled in the course.
Though not formal prerequisites, you should be a proficient Java programmer, have some familiarity with HTML and C/C++, and work well with others; in previous quarters, students who have lacked these skills have tended to do poorly in the course.
Procedures for dropping the class, petitioning to add the class, changing your grade option and related matters are discussed in Enrollment Information. In particular, those wishing to add the course must demonstrate to the instructor that they have the prerequisite or its equivalent.
...grouped in one place for easier reference...
CS122B course code: |
34060 |
Meeting time and place: |
Tu & Th 3:30-4:50 pm, PSCB 140 |
Jacobson's office: |
Bren Hall 4052 |
Office Hours |
Tu & Th 2:00-3:15 pm & by appointment, except for campus holidays |
Jacobson's phone: |
949-824-7300 |
Jacobson's email address: |
jacobson@ics.uci.edu |
Jacobson's home page: |
www.ics.uci.edu/~jacobson |
Course web page: |
www.ics.uci.edu/~jacobson/cs122b/cs122b.html |
Questions to course staff |
cs122b-help@ics.uci.edu |
Course news group |
https://eee.uci.edu/toolbox/noteboard?board=7308 |
TA: |
Setareh (Seh'-ta-reh) Rafatirad |
TA's email: |
srafatir@uci.edu |
TA's office hours: |
Mondays, 10-11:00 am, DBH 2099 |
UCI provides all its students with basic computing, including electronic mail and worldwide Internet services, via a "UCInetID" computer account. All CS122B students need this account:if you have not yet activated your UCInetID, go to the UCInetIDs page. Under UCInetID Activation, click on Faculty, Staff And Students and follow the instructions. Be sure to have your student ID and social security number handy; youll need them to complete the activation process.
You will also need an ICS computer account to use ICS computers. If you are already enrolled in the course, or a major in the Bren School of ICS, your account has already been created. If you are petitioning to add the class (and are not a Bren School major), your account will be created a day or two after you enroll.
You need to activate your ICS account to use it: Bring your UCI student ID card (and yourself!) to the lab attendant in ICS 364. Your ID will be verified; you then take an on-the-computer quiz about the rules regarding use of ICS computer resources and provide a password. Your account is now ready for use. For details on activating ICS accounts, see the Account Activation Web page..
Throughout the quarter, we post messages of general interest to the Announcements Web page. Be sure to read it regularly.
We send urgent or particularly important announcements by email to your UCInetID account. So, we require that you check your UCInetID email regularly, once daily during the week at least (and recommend checking daily on weekends and holidays as well). If you prefer to read these messages from another account, you need to set your UCI account to forward your email to your preferred account; see the Forwarding UCI E-mail Web page for details.
None! Reference information directly applicable to a project phase is given in that phase's write-up. Additional references abound on the web; a quick search will typically find them. And much of the material is also in printed textbooks; reference these as your needs require.
You can ask questions outside of lecture by coming to the TA's or my office hours, sending email to cs122b-help@ics.uci.edu, posting a message to the course's NoteBook on eee and, within course cooperation rules, from your fellow students and others.
During our office hours, course-related matters will have first priority. Of course emergencies may come up, but we'll try to give advance notice of any changes.
If I'm not immersed in something else, I'll be glad to answer short questions whenever I'm in my office, so feel free to drop by. I'll also be happy to make appointments for other times during the week.
You can get short questions answered by sending email to cs122b-help@ics.uci.edu. Course staff checks this email address regularly and will respond to your question within several hours (somewhat less frequently on weekends and holidays). If the response to your question would be complex or lengthy, we may provide a short response and ask you to meet with the TA or me for a more in-depth discussion.
Subject to class cooperation rules, discussed below, you can also get help from your fellow CS122B students and others by (of course) talking with them or by posting a message to the eee NoteBook for this class. Do keep postings limited to CS122B topics; off-topic messages are subject to deletion. Only answer a question if indeed you know the answer to itlots of confusion can result if wrong information gets spread around! (For example, if someone asks when a phase of the project is due, don't guess!) The TA and I will chime in on the newsgroup if need be, but posting messages on the newsgroup is not the way to contact us; instead, send mail to cs122b-help@ics.uci.edu.
If you have a question or comment of a personal or private nature, email me directly at jacobson@ics.uci.edu or visit me in person.
The overarching assignment in this course is to implement the FabFlixs project according to the specifications given in The FabFlixs Project write-up. Work is done by teams of two (except in special circumstances; see the introductory material in the FabFlixs Project for details). We expect team members to take on a substantially equal part of the learning and work needed to complete the project.
The project is broken into six phases. Phase 0 is where the team sets up the environment needed to develop FabFlixs; it is not graded. Phases 1 through 5 are where the team adds functionality to the FabFlixs system. The work done in these phases is graded; the team can earn from 0 to 4 points for each phase's work, depending upon its completeness, correctness, performance and "stylishness." Each member of the team will receive the same score.
Shortly after each of Phases 1 to 5 are turned in, your team will demonstrate to course staff the functionality and performance of the features implemented in that phase; each team member should participate equally in the demonstration. If the demonstration is done well, and each member participates equally, each team member will earn 1 point. If one member does well and the other does not appreciably participate, the participating member will get 1 point, but the other member will get 0 points. A member can also earn a half of a point if s/he does participate, but not up to the level of the other team member, or the presentation as a whole is lacking. This 0, .5, or 1 point is added to the individual's score for the phase. So there are a possible of 5 points total for each phase.
Each graded phase is worth 20% of your course grade, so a student's score for the course is the sum of the points earned on each of the five graded stages. We will assign final grades on at least the following scale; the cutoffs may be lower: Grades in the A range (A-, A, and in exceptional cases, A+), 90% and above; grades in the B range, 80%-89.99%; grades in the C range, 70%-79.99%; grades in the D range, 60%-69.99%; and F grades below that. Using an established point scale means that you are not graded in direct competition with your classmates. Any student who makes a concerted effort to complete course work and gets at least some of the FabFlixs project working will not receive an F.
Contact the TA or me if you have questions about your score. We will be happy to correct any errors that do occur, but we must ask that you bring us your grading questions within one week after a phase's score is posted.
Your assignments will be graded as quickly as feasible; grades will be posted on the eee GradeBook for this class.
More details about team formation (and dissolution), the FabFlixs project's requirements, the project's phases, phase demonstrations, grading, and related matters, are in The FabFlixs Project document.
Final course grades, the scores used to compute them, a number of statistics about the class and an end-of-quarter note explaining grade computation will be available on the course Web page soon after the course is over. Follow the links to Course Grades and A Note on Course Grades to access that information.
To develop the project, you team will need access to a PC onto which you can install the environment needed for FabFlixs development (and, of course, to develop FabFlixs itself). We recommend that the computer be a PC-compatible or Mac running Windows. We know this environment will properly run the tools we require and recommend for this course, and it is the environment we support; in particular, that implies we can help you when you have questions or problems. Though we have not tested whether the course tools work in a Linux or Macintosh O/S environment, students in the past have used these or similar tools in such environments with great successprovided they were reasonably expert in these tools and environments before coming to this course. Course staff will help as best as we can with unsupported environments, but we cannot spend significant time helping you resolve issues with these non-course-standard environments.
The computer can be a laptop or desktop, though a laptop will be easier for you, as you can do your demonstrations directly from that computer by bringing it to your team's demonstration meetings.
For those of you that do not have access to a development or demonstration computer, we have provided access to three machines in the main computer room, ICS 364, that you can use for either (or both) purposes. They are located along the windows between air conditionoing units 11 and 13, and are called beautifulshiner, blue-shiner and delta-smelt. If you want to use these computers, email me your name, your team name, and your ICS account name; I will pass that information on to ICS Support, who will add your accounts to those that can log in to these machines. These machines are not pre-configured for this course and so you may have to set them up as you would for a personal machine; see Phase 0 of the FabFlixs project for details.
You are expected to know and follow UCI and Bren School academic honesty policies; do read them. The ICS policy can be found (among other places) on the ICS undergraduate student policies Web page; the UCI policy is on the UCI Academic Senate site.
In addition to those rules, there are some specific rules regarding cooperation with people not on your team (team members are, of course, encouraged to cooperate fully with each other):
The work a team turns in must be its own; in particular, it must write its own code, except that it can use data and programs we provide to you (such as the FabFlixs test data) and data or programs from another source, provided I or the TA have explicitly allowed you to use it. The team may not have another person write part of its assignment or let someone plan the detailed strategy it will use to attack the problems the assignment poses. The team may ask other students for help on technical matters, such as which of several tools or general approaches might be useful in tackling a particular problem, how to use a particular tool, the appropriate syntax of language or tool statements or commands, what a particular SQL command does or how to interpret an error message. You may, of course, get help from the TA and me: we know what sort of help is allowable, so feel free to ask us any question you have (but we may decline to answer it if it means we would be doing your work for you).
When you use information given in texts or other sources, you must credit the source of that information, be it a book, program code, article, web site, radio or TV broadcast, person or some other source; not doing so is plagiarism, and is considered academically dishonest.
Violations of academic honesty will be dealt with in accordance with Bren School and UCI policies.
Best advice: If you are unsure whether certain behavior is acceptable, ask before you engage in it!
Attend the lectures; Lectures are a required part of the course, so I will not repeat a lecture you chose to skip, though of course I will answer questions about it. You may audiotape lecture, provided you use the recording only to study for this course.
Start early doing the assignments; computer work always takes longer to complete than you think it will, even if you have previous experience: pitfalls, stumbling blocks and unexpected difficulties are an inevitable part of computing. Start early; work consistently. All information necessary to complete each project phase is in the project document.
Keep a backup of every completed phase.If an assignment should get lost (such as because of a file server crash), we expect you to be able to supply a replacement copy quickly.