Syllabus - Computer Sciences 312 -Introduction to Programming
The University of Texas at Austin ∑ Fall 2015

Description: Computer science encompasses a wide range of topics and skills designing and building computer devices (e.g., your cell phone, laptop, cleaning robots), designing and building programming languages (e.g., Java, Python, C) and the supporting software that control these devices (e.g., operating systems, compilers), and the actual applications themselves (e.g., reading an x-ray, video animation, voice mail). This course focuses on how to write computer programs that solve problems on a general purpose computer.

Programming is one of the key tools that computer scientists use to help themselves and others use to solve problems. This course uses a particular programming language, Java, to introduce you to how to use a computer to solve your problems. In this course, most of your learning will take place when you are putting in to practice the concepts from the book and lectures to solve more and more complex problems using more and more sophisticated programming practices. You will learn by doing. Performance on the programming assignments and performance on exams correlate closely.

Programming is a skill learned by experience, not just listening to lecture. To gain that experience I strongly encourage you to do as many extra problems as time allows. See the schedule for extra problems from the textbook and websites with practice problems.

Objectives: This is a first course in computer programming. The purposes of the course are to learn fundamental computer science concepts including algorithm development, problem decomposition, data types, variables, parameters, decision making, iteration, arrays, and 2D arrays. By the end of the course students are expected to be able to implement programs consisting of several programmer defined data types and several hundred lines of code employing non trivial algorithms.

Estimates of the required effort to pass the class are:

Prerequisites: Credit with a grade of at least C- or registration for Mathematics 408C, 408K, or 408N..

CS312 is taught two ways:

  1. The BURNT ORANGE sections of the course (unique course ids 50550 through 50580) have lecture three times a week and a discussion section once a week.
  2. The BEVO sections of the course (unique course ids 50585 and 50590) have lecture once a week and have lab in the CS department's teaching classroom three times a week.

Discussion Sections

Unique ID Lecture Discussion Section Time Section Location Section TA and Grader
50550 10 - 11 am
CAL 100
Monday, 11 am - 12 noon WEL 2.256 Megan
50555 Monday, 1 - 2 pm ECJ 1.204 Katherine G.
50560 Monday, 2 - 3 pm BUR 134 Jialin
50565 11 am - 12 noon
CAL 100
Friday, 9 - 10 am CBA 4.326 Katherine B.
50570 Friday, 10 - 11 am SZB 330 Aila
50575 Friday, 2 - 3 pm RLM 5.114 Kris
50580 Monday 12 noon - 1 pm WRW 113 CK
50585 1 - 2 pm
BUR 220
MWF 2 - 3 pm GDC 2.506 Roman / Mike
50590 MWF 3 - 4 pm GDC 2.506 Sonika / Mike

Teaching Staff:

Required Materials:

  1. Building Java Programs: A Back to Basics Approach (3rd Edition), Publication Date: March 7, 2013 | ISBN-10: 0133360903| ISBN-13: 978 - 0133360905 | 3rd Edition, Pearson Education / Addison Wesley. 

    Textbook homepage is


  2. Purchase an iClicker (a remote control device) from the Co-op bookstore or the iClicker website.

    Be sure you get the "iClicker'' brand. We are using iClicker+ but the iClicker2 or original iClicker will work as well.


Class web site: Course materials and announcements are available there.

Startup: Most of the things you need to do to set up your infrastructure for the class are on the startup page.

Conduct in Lecture and Section: I implore you to not use class time to e-mail, update your Facebook page, instant message, etc. If you are addicted to the your smartphone, laptop, or tablet, consider this class your social media free zone. Further, I guarantee you that you will not do well in the course if you are simply looking up long enough to type out whatís on the projector screen before you return to see whether somebody Ďlikedí your comment about the Cheerios you had for breakfast. In fact, the empirical research on this topic is clear: people are incapable of learning and retaining information when they are multi-tasking on their computers (and itís a distraction to the people sitting around you that are trying to learn something).

Class Participation, iClicker

Class Discussion Tool: I have set up a discussion group for the class on Piazza.

Canvas: We will use Canvas to turn in programming assignments. See the assignments page for more details.

Email: All students must become familiar with the University's official e-mail student notification policy. It is your responsibility to keep the University informed as to changes in your e-mail address. You are expected to check e-mail on a frequent and regular basis in order to stay current with University-related communications, recognizing that certain communications may be time-critical. It is recommended that e-mail be checked daily. The complete text of this policy and instructions for updating your e-mail address are available at which includes instructions on how to update the email address you have on record with UT.

You are responsible for checking your e-mail and the class discussion group regularly for class work and announcements.

Software: Required software for programming assignments is described on this web page:

Computing Facilities:

CS Lab Account:

Schedule: A schedule of lecture topics, reading assignments, and assignment distribution and due dates is available online, via the class web page,  The schedule page contains links to slides for the lectures, assignments, and online readings. Readings are to be completed before class. The schedule is subject to change.

Exams: In order to effectively evaluate your understanding of course material there will be two out of class midterms.  If you have a conflict with a midterm please email the instructor as soon as possible and we will work out an alternate time.

Grading: Class components used to determine your final average:

Component Type Number Points Total Points
Programming Assignments 12 1st, 10 points
all others: 20 points
Quizzes 8 10 each 80
iClicker Participation 40 1 per day 40
Exam 1, 9/30 1 150 150
Exam 2, 11/4 1 200 200
Final Exam 1 300 330

Of the roughly 1100 students who have taken CS312 with me:

Guiding Principle - No whining: Feedback and concerns about the course are always welcome; legitimate grading errors that are identified in a timely fashion will certainly be corrected, but whining is counter-productive and will only irritate those who evaluate your work to determine grades.

Important Dates for Changing Academic Status and Dropping the Course: Refer to the Registrar's academic calendar for the deadlines for changes in academic status. Highlights are:

Students experiencing significant nonacademic problems (extended health problems or family emergencies) should contact the CNS Deanís Office (WCH 1.106, (512) 471-4536) or the Dean of Studentís Office ( for assistance.

See the College of Natural Science Guidelines and Procedures page for more information. (

University Code of Conduct

The core values of the University of Texas at Austin are learning, discovery, freedom, leadership, individual opportunity, and responsibility. Each member of the University is expected to uphold these values through integrity, honesty, trust, fairness, and respect toward peers and community.

Academic Honesty: Taken from the CS department Code of Conduct.

"The University and the Department are committed to preserving the reputation of your degree. It means a lot to you. In order to guarantee that every degree means what it says it means, we must enforce a strict policy that guarantees that the work that you turn in is your own and that the grades you receive measure your personal achievements in your classes:

Every piece of work that you turn in with your name on it must be yours and yours alone unless explicitly allowed by an instructor in a particular class. Specifically, unless otherwise authorized by an instructor:

You are responsible for complying with this policy in two ways:

  1. You must not turn in work that is not yours, except as expressly permitted by the instructor of each course.
  2. You must not enable someone else to turn in work that is not theirs. Do not share your work with anyone else. Make sure that you adequately protect all your files. Even after you have finished a class, do not share your work or published answers with the students who come after you. They need to do their work on their own. This means do not post your solution code to any public web site such as pastebin. Also, do not post your work to the web even after you have completed CS312.

The penalty for academic dishonesty will be a course grade of F and a referral of the case to the Dean of Students. Further penalties, including suspension or expulsion from the university may be imposed by that office.

One final word: This policy is not intended to discourage students from learning from each other, nor is it unmindful of the fact that most significant work in computer science and in the computing industry is done by teams of people working together. But, because of our need to assign individual grades, we are forced to impose an otherwise artificial requirement for individual work. In some classes, it is possible to allow and even encourage collaboration in ways that do not interfere with the instructor's ability to assign grades. In these cases, your instructor will make clear to you exactly what kinds of collaboration are allowed for that class."

For CS312 the policy on collaboration is modified as follows:

If you are repeating the course you may reuse code you completed on your own. You may NOT use code from a program you worked on as part of pair or code that was from a program involved in an academic dishonesty case. You must start from scratch on any and all programs that:

You are encouraged to study for tests together, to discuss methods for solving the assignments, to help each other in using the software, and to discuss methods for debugging code. Essentially if you talk about an assignment with any one else you are okay, but the moment you start looking at someone else's source code or showing someone else your source code you have crossed the line into cheating. You should not ask anyone to give you a copy of their code or, conversely, give your code to another student who asks you for it. Similarly, you should not discuss your algorithmic strategies to such an extent that you and your collaborators end up turning in exactly the same code. Discuss high level approaches together, but do the coding on your own.

Examples of cheating are many and include accessing another student's account, looking at someone else's solution code, copying or downloading someone else's solution code, referring to solutions from previous semesters, having another student walk you through the solution and how to code it, having another student perform significant debugging of your code, having antoher student write your code for you and / or allowing others to copy of access your solution code. This means you shall not look on the internet for code to solve your problems.

Examples of allowable collaboration include discussions and debate of general concepts and solution strategies and help with syntax errors.

The code you can reuse in this course are:

  1. You may use any code you develop with the instructor, TAs, or proctors.
  2. You may use code (with attribution) from the class slides and the class coding examples.
  3. You may share additional test cases and expected results of test cases. You may not share solution code or experiment code.

You shall not make use of code you find from other sources including the world wide web. Materials from the web should only be used for educational purposes. Thus, you can read about linked lists and look at examples of linked list code, but you must not copy any code from the web or be looking at any of this code from the web when writing anything you turn in. If you discuss an assignment with another student or look at examples from the web you should employ the World of Warcraft Rule:

World of Warcraft Rule: After a discussion with another student or looking at example code you should do something that has nothing to do with computer science or programming for al least half an hour. Playing World of Warcraft or other similar activity. (Watching a sitcom, reading a book, working on another class.)

You are also allowed to post short segments of code (2 lines or less) of code that are giving you syntax errors to the class listserv in order to get help on fixing the syntax error.

If you have any doubts about what is allowed, ask the instructor.

Plagiarism detection software will be used on assignments to find students who have copied code from one another. 

For more information on Scholastic Honesty and the UT Honor code see see the University Policy on Scholastic Dishonesty

Religious Holidays: By UT Austin policy, you must notify me of your pending absence at least fourteen days prior to the date of observance of a religious holy day. If you must miss a class, an examination, a work assignment, or a project in order to observe a religious holy day, you will be given an opportunity to complete the missed work within a reasonable time after the absence.

Students with Disabilities: students with disabilities may request appropriate academic accommodations from the Division of Diversity and Community Engagement, Services for Students with Disabilities, 471-6259,

To the CS 312 home page