Syllabus - Computer Sciences 305J -Introduction to Computing
The University of Texas at Austin ∑ Spring 2010

Description: Computer science encompasses a wide range of topics and skills designing and building computer devices (e.g., your cell phone, laptop, weather censors, 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 languages are one of the key tools that computer scientists design and use to help themselves and others use computers to solve problems. This course will use 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 through doing.

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, 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 a C or registration for M305G, or equivalent score on the SAT Mathematics level 1 or level 2 test.

Lecture: Unique course IDs: 54005, 54010, 54015 Mon/Wed/Fri, 2 - 3 pm,  UTC 4.134

Discussion Sections:
Unique ID Discussion Section Time Discussion Section Location Discussion Section TA
54005 Tuesday, 11 am - 12 noon CS Department Teaching Lab
Painter Hall 5.38
South end of lab
Rohit G.
54010 Tuesday, 12 noon - 1 pm Rohit G.
54015 Tuesday, 1 pm - 2 pm Rohit G.

Teaching Staff:

Required Textbook: Designing Java Programs by Stuart Reges and Marty Stepp. ISBN 978-0-321-38283-8, Pearson Education / Addison Wesley. Textbook homepage is

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

Class Listserv and email: One of the primary communications tools outside of class is the class listserv. A listserv is an electronic mailing list. You sign up to the listserv and will then be able to post messages to the listserv. All subscribers to the listserv get all messages posted.

All students should become familiar with the University's official e-mail student notification policy. It is the student's responsibility to keep the University informed as to changes in his or her e-mail address. Students 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, but at a minimum, twice per week. The complete text of this policy and instructions for updating your e-mail address are available at

In this course e-mail will be used as a means of communication with students. You will be responsible for checking your e-mail regularly for class work and announcements.

Computing Facilities:

Software: Required software for programming assignments is described on this web page: The recommended IDE is BlueJ. To work at home you need to download and install the Java SDK and BlueJ. See the software page for details.

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.

Grading: Here are the class components used to determine your final average.

Component Type Number Points Total Points
Assignments 11 varies: 10, 20, or 30 220
Quizzes 13 10 each 130
Javabat Problem Sets 7 7 49
Midterm 1, in class 2/24 1 125 125
Midterm 2, in class, 4/7 1 175 175
Final Exam 1 350 350

The last time I taught the course in Fall of 2008 128 students enrolled in the course. 94 students got a C or better. 17 students got a D or F. 17 students dropped the course. The majority of students getting Ds or Fs missed 1 or more exams without an excuse, had a failing homework average, and a failing quiz average. (In other words they quit trying.)

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:

Academic Dishonesty: 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.

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 CS305J the policy on collaboration is modified as follows: 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.

Understand the difference between cheating and collaboration. Collaboration is allowed, cheating will lead to failure in the course.

Examples of cheating are many, but include accessing another student's account, looking at someone else's solution code, copying or downloading someone else's solution code, 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 recommended textbooks, the class slides, and the class coding examples.
  3. You may share additional test cases and expected results of test cases.

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 students or look at examples from the web you should employ the Gilligan's Island 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. Watching an episode of Gilligan's Island or other similar activity.

You are also allowed to post short segments of code (3 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 Dishonesty see the University Policy on Scholastic Dishonesty

Religious Holy Days: A student who is absent from an examination or cannot meet an assignment deadline due to the observance of a religious holy day may take the examination on an alternate day, submit the assignment up to 24 hours late without penalty, or be excused from the examination or assignment, if proper notice of the planned absence has been given. Notice must be given at least fourteen days prior to the classes scheduled on dates the student will be absent. For religious holy days that fall within the first two weeks of the semester, notice should be given on the first day of the semester. It must be personally delivered to the instructor and signed and dated by the instructor, or sent certified mail, return receipt requested. Email notification will be accepted if received, but a student submitting such notification must receive email confirmation from the instructor. A student who fails to complete missed work within the time allowed will be subject to the normal academic penalties.

Disability Related Needs: Please notify me of any modification/adaptation you may require to accommodate a disability-related need. You will be requested to provide documentation to the Office of the Dean of Students in order that the most appropriate accommodations can be determined. Specialized services are available on campus through Services for Students with Disabilities, SSB 4th floor, A5800, 471-6259,  TTY 471-4641

To the CS 305j home page