Course Description

Overview

An introduction to the object-oriented programming in Java with an emphasis on problem solving.

Requirements

To be successful in this course student are required to...

  • complete reading assignments that include online quizzes and activities to prepare for lecture and labs.
  • meet for lecture twice per week to complete activities and learn about concepts and examples with the help of the instructor.
  • meet for lab one per week to learn skills and complete activities based on the concepts covered in lecture.
  • complete 5 major homework assignments based on the concepts and skills learned in the course.
  • complete a two in-class exams and a comprehensive final exam to demonstrate expert subject knowledge.

Syllabus »

Instructor

Eric Breimer

...has been teaching programming, data structures, theory of computation web application development, and management information systems courses at Siena since 2002.

More info »

Eric Breimer

Jan 18

Monday - 

No Class

Jan 19

Tuesday - 

Welcome

1.1-1.2

Syllabus, BlueJ, first program

Jan 21

Thursday - 

Intro

1.3-1.7

Activity 1: GPA.java

Basic syntax, input/output, error messages

HW1 Assigned

Jan 25

Monday - 

Lab 1

Intro

BlueJ, using objects, getting input with Scanner

Jan 26

Tuesday - 

Objects

2.1-2.6

Variables, assignment, arithmetic expressions, int vs. double

Jan 28

Thursday - 

Objects

2.7-2.13

Using method: constructors, mutators, accessors

Activity 2: LabClass

Feb 1

Monday - 

Lab 2

Using Objects

Strings, concatenation, Tokenizer

Feb 2

Tuesday - 

Classes & Methods

3.1-3.6

Classes, method parameters, return, this

HW1 DUE Midnight

Feb 4

Thursday - 

No Class

HW2 Assigned

Feb 8

Monday - 

Lab 3

Implementing Classes

Instance variables, constructor, mutator, accessor, toString

Feb 9

Tuesday - 

Classes & Methods

3.7-3.14

Debugging, unit testing, API, commenting, JavaDoc

Feb 11

Thursday - 

Data Types

4.1-4.6

Constants, math, type conversion, characters, Strings

Activity 3: zyBook Challenge 4.1 - 4.6

Feb 15

Monday - 

Lab 4

Practical Exam #1

Implement a class and testing the methods

Feb 16

Tuesday - 

Exam Review

Practice Exam

HW2 DUE Midnight

Feb 18

Thursday - 

EXAM #1

Feb 22

Monday - 

No Lab

Winter Break

Feb 23

Tuesday - 

No Class

Winter Break

Feb 25

Thursday - 

No Class

Winter Break

Feb 29

Monday - 

Lab 5

Math Expressions

Computing Easter and triangle perimeter

Mar 1

Tuesday - 

Numeric Data Types & Branches

4.7-4.12 and 5.1-5.3

Random numbers, if-else statements, relational operators

Mar 3

Thursday - 

Branches

5.4-5.7

Logical operators, if-else branches, using Boolean data types

HW3 Assigned

Mar 7

Monday - 

Lab 6

Branches

Implementing a slot machine

Mar 8

Tuesday - 

Branches

5.8-5.11

Branches using string operations and floating-point comparison

Mar 10

Thursday - 

Loops

5.8-5.11

Nested branching

Mar 14

Monday - 

Lab 7

If Statement & Boolean Logic

CodingBat Problems

Mar 15

Tuesday - 

Loops

6.1-6.3

While loops

IfStatementsAndLoops.zip

Mar 17

Thursday - 

Loops

6.4-6.5

For loops

Loops.java

HW3 DUE Midnight

Mar 21

Monday - 

Lab 8

Loops

Using loops to make patterns

HW4 Assigned

Mar 22

Tuesday - 

Loops

6.6-6.10

Loops with user input and nested loops

Mar 24

Thursday - 

No Class

Easter break

Mar 28

Monday - 

No Lab

Easter break

Mar 29

Tuesday - 

Arrays

7.1-7.4

Array basics and iteration

Mar 31

Thursday - 

Arrays

7.5-7.6

Swapping elements in an array

Apr 4

Monday - 

No Lab

Cancelled

Due to snow

Apr 5

Tuesday - 

Exam Review

Chapters 5-7

If statements, loops and arrays

Practice Exam

Practice code

Apr 7

Thursday - 

EXAM #2

Apr 11

Monday - 

Lab 9

Arrays

Car parking

HW4 DUE Midnight

Apr 12

Tuesday - 

Arrays

7.7-7.8

Copying, comparing and reversing arrays

Apr 14

Thursday - 

Arrays

7.9-7.12

CharArray.java

HW5 Assigned on Friday

Apr 18

Monday - 

Lab 10

Arrays & File I/O

Starting HW5

Apr 19

Tuesday - 

Arrays

8.1-8.4

File input/output and exceptions

Apr 21

Thursday - 

Files

9.1-9.5

Exception handling

Apr 25

Monday - 

Lab 11

Practical Exam #2

Data types, branches, loops and arrays

Apr 26

Tuesday - 

Files

Chapter 8 & 9 continued...

More practice with files and arrays

Apr 28

Thursday - 

Last Class

Final Exam Review

Chapters 1-8

Practice Exam

Solution

May 2

Monday - 

No Lab

HW5 DUE Midnight

May 3

Tuesday - 

Reading Day

May 4-7

Thursday - 

Final Exams

Reading

Description

CSIS-120: Intro to Programming

Lecture: Tuesday & Thursday, 8:15-9:40am, RB 328

Lab 01M CRN 42894, Monday, 8:10 - 10:10am, RB 306

Lab 05M CRN 43589, Monday, 10:30 - 12:30am, RB 306

Instructor

Dr. Eric Breimer, ebreimer@siena.edu, 786-5084, RB 320

Office Hours

Prerequisite

CSIS-110: Introduction to Computer Science

Required Text

Java Early Objects, Interactive zyBook

Required Software (free)

Official Online Documentation

Course Learning Goals

  1. To enhance the student's problem-solving abilities.
  2. To develop the student's ability to develop programming solutions.
  3. To enable the student to translate algorithmic solutions to a Java implementation.
  4. To help the student acquire knowledge about computing systems in general.
  5. To continue the student's introduction to the academic discipline of Computer Science.

Topics

For a complete list of topic covered see the Course Schedule

Grading

Final grades will be based on the following weights:

10%zyBook Activities
10%In-class Activities & Participation
10%Homework (Programming Projects)
10%10 Lab Activities
10%2 Lab Practical Exams
15%Exam 1
15%Exam 2
20%Cumulative Final Exam

Letter grades will be assigned based on your numeric final average:

A>= 93.0 A->= 90.0 B+>= 87.0
B>= 83.0 B->= 80.0 C+>= 77.0
C>= 73.0 C->= 70.0 D+>= 67.0
D>= 63.0 D->= 60.0 F< 60.0

Course Format

Reading

Each week, students must complete the assigned reading in the zyBook, which includes activities and quiz questions that must be completed.

zyBook Activity:

Before each lecture, students must complete all the participation and challenge activities from the assigned reading.

In-class Activity & Participation:

During lecture (typically Thursday) students will break into small groups and complete activities or solve problems based on the assigned reading. After completing the activity or solving the problems, students submit a deliverable (via email or Blackboard). Students can leave a lecture activity as soon as they are finished and the deliverable is submitted. To facilitate this activity, students are required to bring a laptop computer to class. If a student does not have a laptop, they must contact the instructor prior to lecture and the instructor will either provide one or arrange for the student to work with a partner who does have a computer.

Traditional Lecture:

For one lecture per week (typically Tuesday), the instructor will cover important concepts and details that will help students with lab, programming projects and exam preparation. Thus, it is important that you take notes that you can study from. These lectures will not be provided online. If you miss lecture, you must make arrangements with another student to get the notes. Be warned that many exam questions will come directly from these traditional lectures.

Lab Activities:

There will be 9 regular lab sessions where students will complete more structured activities than the ones in lecture. Students will work in pairs. Each pair of students must submit the lab handout with all questions answered and must submit required code via Blackboard. Students do not always finish the activity in the allotted 2-hour lab session, so the lab handout and code is due at the beginning of the next lab session.

Lab Practical Exams:

Two lab sessions will be used for practical exams. The practical exams test students' ability to code independently. Thus, students cannot seek help from the instructor or TAs. Unlike regular labs, students must complete the practical exam in the 2-hour lab session. Students are required to bring a laptop computer to lab practical exams.

Exam 1 and 2:

Two exams will be held during lecture. See the scheduled for announced dates. The exams test students' knowledge of course and programming topics. Written exams include a mix of multiple-choice, fill-in and explanation-type questions. Students will also have to write and explain Java code. Students will not be allowed to use a computer for the written exams.

Cumulative Final Exam:

During final exam week, students will take a 2-hour cumulative final exam. It will include material covered in the first two written exams as well as the new material covered after the second written exam.

Lecture Attendance

A student is expected to attend every lecture. It is the student's responsibility to be aware of this policy. Students can receive up to a 10% penalty toward their final average for excessive absence, lateness, or disruption during lecture. Students will be given a warning if they are more than 2 minutes late to lecture. After a warning, subsequent lateness will be recorded. Students who are more than 10 minutes late will be marked absent and penalties will be incurred. Students can have two unexcused absence and two lateness warnings without any penalty. But after two, students will receive a 1% penalty for each unexcused absence and a 0.5% penalty for each unexcused lateness (maximum of 10% total penalty).

Lab Attendance

Students are required to attend all lab sessions. There is a 10% penalty toward the individual lab for arriving late. Students will be given a warning if they are more than 2 minutes late. After a warning, the penalty will be enforced for any subsequent lateness. Students who are more than 10 minutes late will be marked absent. In addition, there is a 10% penalty for leaving early, i.e., leaving before the 2 hour lab period is over unless a student has completed the lab and submitted the deliverable.

Students who miss lab entirely receive a 30% penalty for the lab and must submit the lab deliverable before the next lab period, otherwise they will get a zero. In addition, students who miss two or more labs (unexcused), will receive additional penalties describe below:

2 unexcused lab absences 3% penalty on final average
3 unexcused lab absences 7% penalty on final average
4 unexcused lab absences 15% penalty on final average
5 unexcused lab absences Automatic failure from the course (no exceptions)

Excused Absences

Lecture:

Students can be excused (and not penalized) from lecture for illnesses, job interviews, and serious commitments such as athletic or academic trips/competitions. However, students must inform the instructor as soon as possible, provide proof/documentation, and take responsibility to acquire notes and information from other students.

Lab:

Students can be excused (not penalized) from lab and allowed to submit late deliverables but the following rules will be strictly enforced:

The instructor makes the final decision to excuse or not to excuse an absence. If you are concerned that an absence will not be excused, you should contact the instructor as soon as possible.

Pandemic/Emergency Preparedness

College Policies

Academic Integrity

Exams:

Students caught cheating on an exam, will receive a zero on the exam, will be penalized a full letter-grade in the course, and a letter describing the student's actions will be sent to Siena's Vice President of Academic Affairs. During an exam period, students cannot share information, look at each other's tests, or use unauthorized materials. Unless specific clarification is given, exams are closed-book, closed-notes, there are no cheat sheets allowed, and electronic device usage is prohibited.

Plagiarism on Code:

It is very easy to copy code from other sources and claim it as your own. This is academically dishonest and considered plagiarism. Students who present other authors' code, documents, or programs as their own will receive a grade of zero on the entire project or lab. Students who commit plagiarism a second time will again receive a zero, but will also be penalized a full letter-grade in the course and a letter describing the student's violation will be sent to Siena's Vice President of Academic Affairs. Use the following guidelines to avoid code plagiarism:

Do NOT copy code:

You should never use copied code (from Internet, peers or other sources). Instead, put the copied code away and try to write the code on your own. If you cannot explain your own code and if it happens to match code from other sources, you will be accused of plagiarism.

Do NOT share your code:

While it is natural for students to help each other outside of lab, students retain more knowledge if they attempt to write and debug code on their own. It is acceptable for students to help each other understand general concepts, but students are prohibited from sharing their code or writing code for another student. The only exception is when you are working with a designated partner for a lecture activity, lab activity or group project, and in these cases, the only collaboration and sharing permitted is between designated lab pairs or group members.

Ask for appropriate help:

It is appropriate to ask for or provide help solving a coding problem as long as it is done in a general or abstract way. Appropriate examples include: helping a peer understand an error message, sharing debugging strategies, or explaining a concept related to a specific problem. But, it is inappropriate to have any other students (including tutors) solve your problems directly. Seeking excessive help is a form of cheating. Inappropriate help includes: Asking a peer or tutor to write code for you, looking at another student's working solution, or receiving excessive (step-by-step) help in directly completing a project.

Strive to be independent:

An important goal in this course is for students to learn strategies for becoming more independent with respect to problem solving, coding, and debugging. In the beginning, it is OK to need help. But, towards end of the course, students should not need excessive help writing code. Requiring excessive help indicates that you have not put forth independent effort in lab and on projects. The best way to become an independent programmer is to program often. Experiment with a few lines of code (compile, test and debug constantly). The design of this course will naturally require you to do the programming activities needed to be successful. But, if someone else completes these activities for you, it will show on lab practicals and exams.