CPSC 315 Programming Studio:
Fall 2012


NEWS: 11/28/12, 12:59PM (Wed)
  • [11/28] For project 3 final submission, include a lot of screen-shots.
  • [11/28] Take the two quizzes on eLearning if you have not done so already.
  • [11/28] Course evaluation http://pica.tamu.edu!!! (due 12/4 Tuesday)
  • [11/27] Project 3 presentation schedule posted
  • ---------------------
  • [11/06] Dr. Stroustrup's slides uploaded
  • ---------------------
  • [11/02] AI demo: Team 6; GUI demo Team 16, Team 21, Team 15.
  • ---------------------
  • [10/31] Google Play store
  • [10/31] Mobile App Design Best Practices by Drew Ramsey
  • [10/31] Intro to Mobile User Interface Design by Selma Zafar
  • [10/31] Creating Successful Apple IOS Apps by Two Rivers Apps LLC
  • ---------------------
  • [10/29] Project 3 announced.
  • ---------------------
  • [10/26] A quick tutorial on XML: XML tutorial
  • ---------------------
  • [10/18] No class next Monday (10/22) due to a whole-day event in the College of Architecture. See weekly schedule below for details.
  • ---------------------
  • [10/12] No instructor office hour today (10/12).
  • ---------------------
  • [10/11] Just for laughs: Guess who this is (hint: he invented a programming language).
  • ---------------------
  • [10/08] Quiz grading policy changed to fix bug -- For each set, you need to get the correct combination to get 5/5. If any of the answers are wrong, you will get 0/5 for that set. It looks like many of you will have to redo the quiz. Note: the quiz scores will be part of the 16% which includes attendance, so each quiz will be roughly 5%.
  • ---------------------
  • [10/05] Socket Programming Tutorial (by Jon Solworth at UIC): study on your own
  • [10/03] Just for fun: Scale of the Universe
  • [10/03] Just for fun: How Folding Paper Can Get You to the Moon by Adrian Paenza, TED Ed talk.
  • ---------------------
  • [10/02] Project 2 team reannounced (team 1, 5, and 7 may need adjustment)
  • [10/01] Project 1 final deadline moved to Tuesday 10/2 11:59pm.
  • [10/01] Project 2 announced
  • ---------------------
  • [09/17] Some example inputs for project 1 parser test
  • [09/17] You should not assume that blank space is inserted between all tokens.
  • [09/17] For today's code submission (and all subsequent submissions), coding style and commenting will be taken into account.
  • [09/17] For all submissions, include example output from your running code. See the deliverables section of the Project.
  • ---------------------
  • [09/12] SVN tip -- updated 09/13 (added more usage).
  • [09/08] Interesting blog posts on The development of StarCraft and The making of Warcraft by Patrick Wyatt.
  • ---------------------
  • [09/07] Table implementation: Vector of vector vs. matrix? (you need to consider the tradeoffs).
  • [09/08] DB app code: will be a mixture of C++ code (menu output, user input, etc.) + DML/query language code. Users of the DB app will not have direct access to the DML/query language.
  • ---------------------
  • [09/05] Slides on style will not be covered in class. Review the material on your own.
  • [09/04] Some general feedback added to Project 1 updates section at the beginning of the page (see [9/04]).
  • [09/04] Quiz 1 ready: on eLearning (go to "Assesments" tab and select Quiz 1.
  • ---------------------
  • [09/03] Lab: SVN, Lab: Tortoise SVN, Lab: VS Debugger.
  • [09/03] No instructor office hour today.
  • [09/03] Slides uploaded for week 2. See the weekly schedule for download links.
  • ---------------------
  • [08/31] Absences will be entered into elarning.tamu.edu after each lecture. You can check if you've been tagged as absent (correctly or incorrectly) on elearning.
  • [08/31] For project 1, DBMS code submission (9/10), you don't need to include file I/O function since it requires the parser.
  • [08/31] Nick's office hours on Tue/Thu will be in RDMC 111B, not 111C.
  • [08/29] Project 1 announced.
  • ---------------------
  • [08/28] slide03 and slide04 uploaded. Follow the link from the weekly schedule.
  • [08/27] Programming proficieny survey (in class): this will help determine the teams
  • [08/26] Course web page goes online.
  • ---------------------
  • [LINKS] •News archiveGradesCodesLecture notes
Read-Only Bulletin Board.: 9/12/12, 01:35PM (Wed)

Page last modified: 8/26/13, 01:40PM Monday.

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 10:30am-11:30am, W/F 4-5pm

TA and Peer Teacher:

Chris Pu (TA)
Email: shipu(a)cse.tamu.edu
Office: RDMC 111C
Office hours: MW 5-6pm.
Amanda Cofsky
Email: ancofsky(a)gmail.com
Office: HRBB 219
Office hours: F9-11am
Nick Melnyk
Email: melnynic1(a)tamu.edu
Office: see below
Office hours: TR1-2pm (RDMC 111B) F11:30am-12:30pm (RDMC 111C).


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.


MWF 1:50pm–2:40pm, ARCC 105

The course is listed as a 2-hour per week lecture, and 2-hour per week lab, however it has been intentionally scheduled for 3 hours per week of lecture (along with the lab). We will meet a minimum of 28 lecture periods over the course of the semester. The idea is to "front-load" these lectures in the earlier part of the semester, to cover material that might be useful when working on the programming projects, and spend less lecture time during the project periods themselves. Also, some days when the instructor travels might be used as some of the "missed" days. The specific list of days we will meet will be provided on the course web page.

There is a final exam time reserved for this class. Although the plan is to wrap up the course before this time, students should leave the final exam time available until instructed otherwise, since it might be used for project presentations or something similar. However, there will not be a final exam in the course.


Section 501: MW 03:00 pm-03:50 pm RMDC 111C
Section 502: MW 11:30 am-12:20 pm RMDC 111C
Section 503: MW 04:10 pm-05:00 pm RMDC 111C


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 month-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 (>10 hours/week) outside of class time on programming projects. This may require meeting with team members outside of the class/lab periods.

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). Individual assignments will be small programming assignments to be completed on an individual basis.

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 ? 90% > B ? 80% > C ? 70% > D ? 60% > F. In addition to this, the instructor reserves the right to provide a relative or absolute curve to the final class grade (note that such a curve has not always been applied, and should not be assumed). Also, the instructor may raise the grades of any students near a borderline based on a subjective evaluation of class participation and effort.

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. TBA

III. Weekly Schedule and Class Notes

1 8/27 Introduction; Project 1: Intro to Databases [Chapters 1, 9.1, 9.2] No lab today     slide01
1 8/29 Project 1: Entity-relationship model, relational DB, SQL Schema IDE, SVN, Team assignment Project 1 announced   slide03
1 8/31 Project 1: SQL queries, Database implementation --     slide05
2 9/3 Naming, Style, Commenting [Chapters 11.1, 11.2, 31] Debugger use; Project 1 Design, DB engine [Chapter 23]   Project 1 Design Documents Due naming
2 9/5 API Design, Software Design Principles [Chapter 5] Project 1, DB engine     slide07
2 9/7 Testing and Test-Driven Development (TDD) [Chapter 22] --     slide09
3 9/10 Debugging, Software development approaches [Chapter 5.1, 5.2, 5.3, 8.1, 8.2, 8.3] Project 1: Parsing   Project 1 DB Engine code due slide11
3 9/12 Agile Development, Collaborative Code Development Project 1: Parsing, DB Engine Code Review/Debug     slide13
3 9/14 Project 1 intermediate review --    
4 9/17 Design patterns [Chapter 21] Project 1: Integrating parser and DB engine   Project 1: Parser code due slide18
4 9/19 Code portability, Code performance [Chapter 24, 25, 26] Project 1: Integrating parser and DB engine, Code Tuning     slide19
4 9/21 No classCode tuning (see Wednesday lecture) --    
5 9/24 Project 2: Introduction to AI Project 1: DB application coding   Project 1 Parser+DB engine integrated code due slide14
5 9/26 Project 2: Search Project 1: DB application coding     slide15
5 9/28 Project 2: Game search --     slide15
6 10/1 Project 2 Announcement [General reading: Chapter 6.1-6.4] Project 2 design Project 2 announced Project 1 final version due
6 10/3 Project 2: Network protocols and socket programming Project 2: game mechanics     web_link;
6 10/5 Project 1 presentation (presentation by top team in each section) --    
7 10/8 Advanced AI: Neuroevolution Project 2: game mechanics / socket programming   Project 2 design documents due slide16
7 10/10 No ClassAdvanced AI: Intro to machine learning (optional: Attend Dr. Francis Quek's talk) Project 2: socket programming    
7 10/12 Guest lecture:SOLID principles (by Mike Abney at Improving Enterprises) --    
8 10/15 Guest lecture: Design patterns applied (by Ben Floyd at Improving Enterprises) Project 2: AI engine   Project 2 Game mechanics and server code due
8 10/17 Guest Lecture : Ross Wright at FrogSlayer on "Software development in the real world" Project 2: AI engine    
8 10/19 Project 3: Android introduction: Lecture notes by Dr. Jaerock Kwon --     kwon-android01
9 10/22 No ClassProject 3: Android app fundamentals: Lecture notes by Dr. Jaerock Kwon (optional: attend Architecture Research Symposium [Schedule]) Project 2: client GUI   Project 2 AI engine due kwon-android02
9 10/24 Project 3: Android app fundamentals: Lecture notes by Dr. Jaerock Kwon ; Project 2 intermediate review Project 2: client GUI     kwon-android02
9 10/26 Project 3: XML --     slide21
10 10/29 Project 3 announcement Project 2 status check Project 3 announced Project 2 final version (including GUI client) due
10 10/31 Brain-storming session for Project 3 app ideas Android SDK installation and testing, emulator test run    
10 11/2 Project 2 presentation (live competition) --      
11 11/5 Guest Lecture: Dr. Bjarne Stroustrup Android SDK user interface   Project 3 Design documents due exceptions
11 11/7 No class Android SDK: graphics    
11 11/9 No class --    
12 11/12 No class Project 3 status check   Project 3 user interface code due
12 11/14 Project 3 intermediate review Project 3 status check    
12 11/16 Guest lecture: Computer Science != Software Development (by Mike Abney at Improving Enterprises) --    
13 11/19 No class Project 3 status check   Project 3 core algorithm implementation due
13 11/21 No class --    
13 11/23 No class (Thanksgiving) --    
14 11/26 No class Project 3 status check    
14 11/28 Final project presentation (all teams) --    
14 11/30 Final project presentation (all teams) --    
15 12/3 Final project presentation (all teams) --   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 $