cs046 » SJSU »

<html xmlns="http://www.w3.org/1999/xhtml"><head> <meta content="text/html; charset=UTF-8" http-equiv="content-type">



COURSE SYLLABUS and Greensheet

Course Prefix and Number: CS 46A

Course Title: Introduction to Programming

Number of Units: 4

Catalog Description:

Basic skills and concepts of computer programming in an object-oriented approach using Java. Classes, methods, and argument passing, control structures, iteration. Basic graphical user interface programming. Problem solving, class discovery, and stepwise refinement. Programming and documentation style. Weekly hands-on activity embedded in the course.


No textbook required.

Recommended: Cay Horstmann, Java Concepts, 7th Edition, John Wiley, 2013, ISBN 978-1-118-43112-2 (paper) or 978-1-118-54939-1 (ebook). Internet supporting materials for the text are at http://horstmann.com/bigjava.html.

Additional References:

Java Coding Style Guidelines (http://www.cs.sjsu.edu/web_mater/java_code.html)

Java Standard Edition API Specification(http://java.sun.com/javase/7/docs/api/)

The ACM Code of Ethics (http://www.acm.org/constitution/code.html)

Course Prerequisites:

Eligibility for college-level mathematics

Material Assumed from Prerequisite Courses:

CSU mathematics requirements for freshman admissions, which include Algebra I, Algebra II, and Geometry (see http://www.cde.ca.gov/ci/ma/cf/documents/mathfrwkcomplete.pdf)

Course Goal:

To introduce students to programming concepts and techniques using the Java language in a way appropriate for students without a programming background.

Course Objectives:

To learn the basic syntax and semantics of the Java language and programming environment

To understand the concepts of classes and objects

To understand the primitive data types built into the Java language and the difference between variables of primitive types and variables of class types

To understand features of a strongly typed language: variable declaration and type compatibility checking

To learn about lifetime, scope and the initialization mechanism of variables

To be able to implement decisions using if statements

To be able to program loops with while, for and do statements

To learn about parameter passing mechanisms

To be able to write simple graphics programs involving the drawing of basic shapes

To learn the basics needed for testing and debugging programs

To be introduced to inheritance and interfaces

To be able to use arrays and array lists and to learn about simple array algorithms

Student Learning Outcomes:

Upon successful completion of this course, students should be able to:

Analyze and explain the behavior of programs involving the fundamental program constructs

Write short programs that use the fundamental program constructs including standard conditional and iterative control structures

Identify and correct syntax and logic errors in short programs

Write short programs that use arrays or array lists

Design and implement a class based on attributes and behaviors of objects

Construct objects using a class and activate methods on them

Use static and instance members of a class properly

Identify and describe the properties of a variable such as its associated value, scope and lifetime

Describe the parameter passing mechanisms in terms of formal parameters, actual parameters, non-object parameters and object parameters

Write a graphics program that draws simple shapes

Identify super- and subclasses in a class hierarchy

Recognize and trace overrridden and inherited methods in a class hierarchy

Write javadoc comments for classes and methods

To be able to use an integrated development environment and a debugger

BS in Computer Science Program Outcomes Supported

These are the BSCS Program Outcomes supported by this course:

(a) An ability to apply knowledge of computing and mathematics to solve problems

(b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution

(c) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs

(i) An ability to use current techniques, skills, and tools necessary for computing practice

(j) An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices

(k) An ability to apply design and development principles in the construction of software systems of varying complexity

Course Topics:


Corresponding chapters in Big Java 5th edition


Introduction to computers, programming Languages, algorithms, and the Java Programming Environment

Chapter 1: Introduction. All sections.


Introduction to classes and objects

Chapter 2: Using Objects. Sections 2.1 - 2.8

Chapter 3: Implementing Classes. 3.1 - 3.7



Chapter 2: 2.9 - 2.10

Chapter 3: 3.8


Fundamental Data Types

Chapter 4: Fundamental Data Types. All sections.



Chapter 5: Decisions. All sections.



Chapter 6: Iteration. All sections


Arrays, ArrayLists and Simple Array Algorithms

Chapter 7: Arrays and Array Lists. All sections.


Methods (Parameter Passing, Instance vs. Static Methods)

Chapter 8: Designing Classes. All sections.



Chapter 9: Inheritance. Sections 9.1 - 9.3


Ethics and Social Responsibility

Random Fact 7.2 (the Therac-25 incidents) is a good lead-in to this topic.


Total (A week of class time for midterms is not included.)

Regular term: 13

Summer: 10

Course Requirements

<dl> <dt>Exams</dt> <dd>One unproctored exam (10%). One proctored exam (20%) and a proctored final exam (30%). Exams cannot be made up. There is a 3 day window during which you can take the exam. I suggest you arrange your schedule to be able to take the exams. The grades will not be curved.</dd> <dt>Programming Assignments</dt> <dd>Two assignments per week (40%). Schedule your time well to protect yourself against unexpected problems. I suggest you ignore the official deadlines and complete the assignments 24 hours earlier. Late work is not accepted, but you may complete work early. There is no extra credit or makeup work. All homework is due at 10:59 pm, but I will give you an hour's grace period and accept assignments until 11:59 pm. Do not ask for an additional extension because your Internet went down at 11:58. Assignments will be due on Wednesday and Sunday nights</dd> <dt>Labs</dt> <dd>The lab requirement for this couse is met by successfully completing 80% of the in-lecture questions.You will fail the course if you do not meet this requirement.</dd> <dt>Time Spent</dt> <dd>As per Policy Recommendation S12-3, success in this course is based on the expectation that students will spend, for each unit of credit, a minimum of forty-five hours over the length of the course for instruction or preparation/studying or course related activities.

This is a 4-unit/15-week class during the school year, so you should expect to spend at least 180 hours per semester or 12 hours per week on this class: 5 hours per week in the video lessons (reading and completing in-lecture questions), and 7 hours per week with preparation and homework assignments. The expected times are proportional in a 10 week summer course, i.e. 18 hours (!) per week.

</dd> </dl>

Due Dates for Homework and Exams:

  Covers Draft Due Final Due
Homework 0 Bluej IDE   June 5
Homework 1

Lesson 1: Introduction
Lesson 2: Using Objects

June 9 June 12
Homework 2 Lesson 3: Implementing Classes June 16 Jun 19
Homework 3 Lesson 4: Fundamental Types
Lesson 5: Decisions Intro
June 23 June 26
Exam 1 Cumulative   Open June 26 - Closes June 29
Homework 4 Lesson 5: Decisions
Lesson 6: Loops Intro
June 30 July3
Homework 5 Lesson 6: Loops
Lesson 7: Arrays

July 7 July 10
Homework 6 Lesson 7: Arrays July14 July 17
Exam 2     Open July 17 - Closes July 20
Homework 7 Lesson 7: Arrays
Lesson 8: More about Classes
July 21 July 24
Homework 8 Lesson 9: Interfaces and Inheritance July 28 July 31
Homework 9 Lesson 9: Interfaces and Inheritance Aug 4 Aug 7
Final     Open Aug 7 - Closes Aug 10

Problem Set Requirement

A problem set will be due twice a week. Except for Homework 0, all the problem sets follow the same format. Each week, starting with the first Sunday, there will be about 20 short questions and 3 longer programming problems. On Sundays, a draft version of the three programming problems will be due. On the following Wednesday, the final version of the programming problems will be due along with the short questions. You can start the short questions early in the week and do a few at a time to spread out the work. Just finish by Wednesday.

Each short question is worth 1 point. The draft is worth 5 points and the final worth 15 for a total of 40 points a week.

Homework 0 will have only one version. It will be due the first Wednesday (June 5) and is worth 5 points

These homeworks will be 40% of your grade.

All problem set submissions close at 11:59 pm Pacific Daylight Time

Exams and Final

Each exam is cumulative, covering all the material up to that point.

Exam 1 is unproctored, and exam 2 and the final are proctored. Proctoring will be done in your home or at work - anywhere you can be in a room by yourself. You will get details in an email as the exam date approaches

Course constraints:


Hints to instructors:

Language: Java using the version of Java that is currently supported by the Department (Oracle Java 7 at present).

Lab: All students are required to answer 80% of the in-lecture questions in the Udacity course.

Suggested programming assignments: weekly programming assignments requiring students to use the concepts and programming techniques covered in the course. Programs should be appropriately documented via javadoc comments and should adhere to the Java Coding Style Guidelines posted on the CS Department web page.

Office Hours

I am available by messages sent on Canvas and in the Udacity forum. Send a message on Canvas, Click on People in the menu on the left. Click on my name. Click on send message in the gray box on the right.