CPSC 315 Programming Studio:
Summer 2012


NEWS: 6/27/12, 03:10PM (Wed)
  • [06/27] Neat compiler trick
  • [06/25] Uncle Bob's principles of OOD (Uncle Bob = Robert C. Martin).
  • [06/21] Online course review starts 6/23: http://pica.tamu.edu
  • [06/21] Attendance for labs on Tue/Wed/Thu next week is optional.
  • [06/20] Project 3 announced.
  • [06/19] Quiz 2 is now online on elearning.
  • --------------
  • [06/17] More Reversi tips: see user Baraqiyal's post
  • [06/15] Random bits: Lessons on design (early personal computers)
  • [06/15] Reversi subtleties: Read-Only Board
  • [06/13] Reversi programming resources: Thomas Wolf's page
  • [06/13] Compact display for the board: Read-Only Board
  • [06/12] Project 1: You may submit a revised version directly to the TA. Your previous version and the new version (plus penalty) will be graded and the higher score will be used toward your grade.
  • [06/12] Project 2 deadlines have changed. See weekly schedule below.
  • [06/12] Project 2: you may program in Java. Project 3 will use Java (Android SDK) and it will reuse code from project 2.
  • [06/10] Tuesday 6/12: poll for guest lecture topics.
  • --------------
  • [06/08] Project 2 announced.
  • [06/07] Friday 6/8 lecture: attendance is optional.
  • [06/06] Monday 6/11 lecture moved to Tuesday 6/12 to give you more time for the project 1 final submission. Lab will meet as usual to answer questions, review project 1 code, etc.
  • [06/05] Quiz 1 now online on elearning (under "Assessments"). There will be about 2 more quizzes.
  • [06/05] Q/A sesseion during today's lecture. Attendance is optional for the lecture portion (but not for the lab).
  • [06/05] All commands and queries need to end with the semicolon.
  • --------------
  • [06/04] Each command or query should end with the semicolon. The example in project 1 document was fixed to reflect this change.
  • [06/01] Parser: you may or may not report type of error while parsing (for the parser code submission).
  • [06/01] Design considerations: (1) Parser does not need to take in arbitrary grammar. (2) Define the core data structure for the relational tables. (3) Include discussion on how the major components will interact (discuss both ways of the interaction: how functions are called and what will be returned and how).
  • --------------
  • [05/31] Piazza discussion forum
  • [05/31] Reading assignments should be completed within the indicated week. There will be a brief online quiz every week to check your progress.
  • [05/31] Informational: SOLID (object-oriented design principles)
  • [05/31] Supplementary slides for the lab: Aalap's page
  • [05/30] Random tips posted on the read-only board.
  • --------------
  • [05/29] Search for recursive descent parser and start implementing part of the parser code immediately as you work on your design document.
  • [05/28] Project 1 announced.
  • [05/28] Slides for week 1 uploaded (see Weekly Schedule, right-most column).
  • [05/28] Course web page goes online.
  • --------------
  • [LINKS] •News archiveGradesCodesLecture notes
Read-Only Bulletin Board.: 5/22/12, 02:49PM (Tue)

Page last modified: 6/2/12, 10:45AM Saturday.

General Information Resources Weekly Schedule Credits Lecture Notes Example Code Read-Only Board

I. General Information


Dr. Yoonsuck Choe
Email: choe(a)tamu.edu
Office: HRBB 322B
Phone: 979-845-5466
Office hours: M/W/F 1:00pm–2:00pm


Aalap Tripathy
Email: aalap(a)cse.tamu.edu
Office: HRBB 514B
Office hours: MTWR 1:00pm-2:00pm


This class is intended for students who have completed CPSC 314 - Programming Languages, and are concurrently taking CPSC 313 - Intro to Computer Systems. It is meant to be somewhat of a "capstone" course for the lower-level computer science courses, before taking courses in the upper-level tracks.


MTWRF 2:00pm–3:35pm, HRBB 126

The course is listed as 2-credit lecture, and 2-credit lab, however it has been intentionally scheduled for 3-credit per week of lecture (as well as the lab). A normal load during a 5-week course during the summer is 1:15 hours per lecture, 5 days a week. To adjust for the course load, the following schedule will be used:

Final exam period will be used for project presentation.


MTWR 4:00pm–5:20pm, RDMC 111C.

Due to similar reasons, the lab will meet MTWR, but the time reduced to 1 hour per day to adjust for the credit hour.


This course is intended as an intensive programming experience that integrates core concepts in Computer Science and familiarizes students with a variety of programming/development tools and techniques. Students will primarily work in small teams on a couple-of-week-long projects emphasizing different specializations within computer science. The course focuses on honing good programming techniques to ease code integration, reuse, and clarity.

The primary goal for this class is to have students emerge with strong programming skills, able to address both individual and team programming challenges competently. The class is meant to allow students to improve their programming skills through significant practice.


The expected accomplishments of the students are as follows:
  1. Become a confident software developer experienced in the full software development cycle.
  2. Become a capable and effective member in a small software development team.
  3. Become an effective communicator within the context of software projects.


The students who take this course should be able to demonstrate the following upon the completion of this course.
  1. Knowledge of programming and debugging tools.
  2. Knowledge of various programming paradigms.
  3. Ability to design and refine large software systems based on rough system requirements.
  4. Ability to implement and test software system design.
  5. Ability to work as a member of a software project development team.
  6. Knowledge of various software development paradigms.
  7. Ability to manage software development projects.
  8. Ability to write technical documentation regarding software systems.
  9. Ability to communicate the overall design and details of software systems.
  10. Introductory-level knowledge in database systems, artificial intelligence, and software engineering.


We will be using the following textbook: Other books that may be drawn from, and that might be useful references include both the first edition of Code Complete, as well as:

Computer Accounts:

  1. Computer accounts: if you do not have a unix account, ask for one on the CS web page.

Topics to be covered:

Among the topics to be covered in lecture periods are: Though many topics will overlap, this course is not intended to be as in-depth or comprehensive as a standard software engineering course, which focuses more on project management - students may take the software engineering class after taking this class.

Note: You should expect to spend a significant amount of time (>20 hours/week) outside of class time on programming projects. This may require meeting with team members outside of the class/lab periods. Note that during the regular semester, each project runs for one month. Although the scope of the projects will be scaled down, you still need to complete each project within 2 weeks or so, so your absolute committment to this course is mandatory.

See the Weekly Schedule section for more details.


There will be three major projects in the course, each counting for 28% of the overall grade. Specific grading practices for each project will be announced when that project is given out, but the grade may include factors such as evaluation of code clarity, teamwork, etc. Peer evaluation may be used as a significant contributing factor to these grades. The remaining 16% of the grade will be an individual grade based on individual exercises, quizzes, participation in the course survey, and an evaluation of class participation (which might include participation in code reviews).

The 16% of the grade will start off as being based totally on instructor judgement of class participation and effort. As the course progresses, any quizzes given out, individual assignments given out, or other specific graded material will note the portion of this individual grade which that quiz/assignment/etc. affects. The remainder of the individual grade will be based on the subjective class participation and effort grade. For example, if there are 8 quizzes at 1% each, one individual assignment at 4%, and participating in the course evaluation is 2%, then the remaining 2% is based on the subjective evaluation.

The grading scale expected to be used is A (>=90%) B (>=80%) C (>=70%) D (>=60%) F(<60%).

Academic Integrity:

AGGIE HONOR CODE: An Aggie does not lie, cheat, or steal or tolerate those who do.

Upon accepting admission to Texas A&M University, a student immediately assumes a commitment to uphold the Honor Code, to accept responsibility for learning, and to follow the philosophy and rules of the Honor System. Students will be required to state their commitment on examinations, research papers, and other academic work. Ignorance of the rules does not exclude any member of the TAMU community from the requirements or the processes of the Honor System.

For additional information please visit: http://www.tamu.edu/aggiehonor/

For this class, certain aspects of the honor code need to be clarified.

  1. There may be times in this course where you or your team make use of external code/software/libraries. Whenever this is done, you must make sure that, in addition to following any restrictions on that code itself, you clearly document what the source of the external code was, and how it was used.
  2. There may be cases in this course where you or your team seeks outside assistance related to one of the projects. Any assistance received from people other than members of your team, the professor, teaching assistant, or peer teacher needs to be clearly documented.
  3. You will be working in team environments in this course, and your work as a team will be used to determine grades. As such, it is your responsibility, when asked, to:
    • accurately describe the work that you have done on a team project. Claiming credit for work that you have not done or that others did instead is a violation of the code.
    • accurately describe (to the best of your knowledge) the performance of other team members. "Covering" for another team member (claiming they did more work than you know they did) or "spiking" them (claiming they did less work than you know they did) are examples of honor code violations.
    • prevent (as best you can) or report (known) violations of the honor code by your other team members. You share responsibility when a project is turned in; if you are aware of a teammate having violated the code in his/her work on the project, and do not report it, you are claiming credit for that violation yourself.
If there are any questions or concerns about whether an action is appropriate, you should check with the professor or teaching assistant first. If in doubt, assume that it is not appropriate.

Course Policy:

Students with Disabilities:

The Americans with Disabilities Act (ADA) is a federal anti-discrimination statute that provides comprehensive civil rights protection for persons with disabilities. Among other things, this legislation requires that all students with disabilities be guaranteed a learning environment that provides for reasonable accommodation of their disabilities. If you believe you have a disability requiring an accommodation, please contact the Department of Student Life, Services for Students with Disabilities, in Cain Hall or call 845-1637.

II. Resources

  1. Supplementary slides for the lab (by Aalap Tripathy)

III. Weekly Schedule and Class Notes

Deadlines (11:59pm)
1 5/28 --- ---   All assignments are due by 11:59pm
1 5/29 Introduction; Project 1: Database ; [Reading: Chapter 1 and 3, 9.1 and 9.2] Naming/Style/Commenting;
IDE/SVN [Reading: Chapter 11.1, 11.2, 31];
Supplementary slides
Project 1 announced Team Assignment slide01
1 5/30 Project 1: SQL; DB implementation Unit testing;
Project 1 design
1 5/31 API design; Software Design Principles Debugger;
Project 1 Basic parsing [Reading: Chapter 23]
1 6/1 Testing; Test-Driven Development ---   Project 1 draft design due slide09
2 6/4 Debugging; Software Design Approaches [Reading: Chapter 5.1, 5.2, 5.3, 8.1, 8.2, 8.3] Project 1 table storage, table formatting;
Supplementary slides
2 6/5 Agile Development Project 1 status check   Project 1 parser code due slide13
2 6/6 Project 2: Introduction to AI Project 1 status check Quiz 1 announced (elearning)   slide14
2 6/7 Project 2: Game search Project 1 status check Project 2 announced   slide15
2 6/8 Project 2: Network protocols and Socket programming (Socket programming slides are by Jon A. Solworth at UIC) ---   Project 1 DBMS engine code due solworth-sockets
3 6/11 --- Project 1 status check   Project 1 final version due;
3 6/12 Advanced AI: Neuroevolution; [General Reading: Chapter 6.1–6.4] Makefile;
gcc, gdb
3 6/13 Collaborative Software Development;
Design patterns [Reading: Chapter 21]
Project 2 design preview;
Game mechanics
3 6/14 --- Project 2: Socket library    
3 6/15 Code portability; Code performance; Code tuning [Reading: Chapter 24, 25, 26] ---   Project 2 draft design, SCRUM product log, and game mechanics code due (sprint 1) slide19
4 6/18 Project 3: Intro to Android development (slides are from Dr. Jaerock Kwon @ Kettering University, former student, TAMU CSE) Android SDK installation and usage;
Project 2 AI game-search
4 6/19 --- Android SDK IDE preview;
Project 2 client-server (use of telnet)
  Project 2 AI engine code due
4 6/20 Project 3: XML Android SDK: User Interface;
Project 2 client-server code
Project 3 announced   slide22
4 6/21 --- Project 2 client-server code    
4 6/22 Guest Lecture (Long Mai @ Improving: From School Software Projects to Business Software Projects) ---   Project 2 AI engine code due (sprint 2)
Project 2 client-server code due

5 6/25 --- Android SDK: graphics;
Online course review http://pica.tamu.edu
  Project 2 final version due (including client-server code and sprint backlog, etc.) (sprint 3);
5 6/26 SOLID principles (attendance mandatory) Project 3 status check (attendance optional)     slide23
5 6/27 Project 1 top team code review (attendance mandatory) Project 3 status check (attendance optional)   Project 3 draft design due
5 6/28 --- Project 3 status check (attendance optional)    
5 6/29 Project 2 top team code review (attendance mandatory) ---   Project 3 user interface code due
6 7/2 --- ---   Project 3 final version due

IV. Credits

Most of the course content and lecture slides were originally developed by Prof. John Keyser. Thanks to Long Mai and Allen Hurst at Improving Enterprises for valuable feedback.

$Id: index.php,v 2006/08/22 22:01:11 choe Exp $