Course Description

Computer Facilities

Each day, we will have a choice between meeting in a computer lab or in a classroom equipped with a smart board. Both of these rooms are on the same floor, so we can move between the two during our longer block periods. We will also have access to a set of laptops and a wireless network. The computers on our floor are well maintained and proved to be reliable during the administration of the new online state performance tests. These facilities will allow for the more than twenty hours of hands-on laboratory experiences planned for this course.

Text/Resources

Cook, Charles E. Blue Pelican Java, Version 7.0.1A. Refugio, TX: Charles E. Cook, 2010.

Horstmann, Cay. Java Concepts, 7th Edition. Hoboken, N.J.: Wiley, 2013.

Eck, David J. Introduction to Programming Using Java. Hobart and Williams Smith Colleges, 17 May 2013. Web. 09 July 2013.

 

Ford, Paul. (2015, June 11). What Is Code? http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/

 


Course Outline

Unit 1

Introduction to Computer Science (2-3 days)

Objectives/Topics to Cover

   Parts of a computer and their roles in executing programs

   Fetch and Execute Cycle

   Asynchronous Events and Multitasking

   Machine Language vs High-Level Programming Language

   Definitions of Top-down, Bottom-up, and Object-oriented Programming

   Compilers and Interpreters

   Java Virtual Machine and Java bytecode

   Using JDK and Eclipse IDE (and installing them on home computers)

   Computer ethics and social implications

Teaching Strategies

This is a short unit of study that will provide students some context for the more technical objectives in the units to come. Many topics will be covered using analogous demonstrations. For example, a list of commands (in English) will be used to teach the first lesson. One at a time, I will display and blindly follow each command in front of the class. This will highlight the fetch-and-execute cycle, memory storage and retrieval, and the importance of unambiguous code. When a student raises their hand, it will also become a demonstration of handling asynchronous events. Many topics in this unit can be covered in this manner. The unit will also include an explanation of why the Java programming language is the main focus of the course, and a tutorial for installing JDK and Eclipse IDE.

Rather than having a single lesson on ethics and social implications of computers, each unit will include a discussions based on the Paul Ford article, What is Code?. This article is more like a small book in its length and format. For this unit, students will read Chapter 1. After the class discussion, students are required to comment on the related blog post on my website. This blog will focus on the following question: Who should learn about computer code?

References/Readings

Introduction to Programming Using Java, Chapter 1

What is Code?, Chapter 1

Assignments/Labs

   After reading Chapter 1 of Programming Using Java, students will create commands (in English) for a lesson that reviews the vocabulary covered in one of these sections (each student will be assigned a section). Some type of loop should be incorporated into these commands. These commands will be “executed” in class.

   WeBWork Assignment

   Comments on the blog post

   Students will install JDK and Eclipse IDE on their home computers

Unit 2

Programming Fundamentals (15 days)

Objectives/Topics to Cover

   Basic class structure

   Use of “println” and “print”

   Compiling and running programs using JDK or Eclipse IDE

   Variable types (String, int, double) and legal names

   Declaring and initializing variables

   String operations and methods

   Numeric operations

   Mixed data types and casting

   Math class methods (including random())

   Scanner class and methods

   Computer ethics and social implications

Teaching Strategies

Students will be introduced to the above topics with consideration of the syntax, semantics, and pragmatics needed for usable, efficient, and understandable code. Most of this unit will be spent writing and compiling code based on the exercises and labs in Lessons 1-7 of Blue Pelican Java and Chapter 2 of Java Concepts. During this guided practice in the computer lab, I will help students find and improve upon their own solutions.

The ethics and social implications discussion will be based on Chapter 2 of What is Code?. The main theme will be women in computer science (historical and present day).

References/Readings

Blue Pelican Java, Lessons 1-7

Introduction to Programming Using Java, Chapter 2

What is Code?, Chapter 2

Assignments/Labs

   Various exercises in the books

   AP CSA Magpie Lab

   WeBWork assignments

   Comments on the blog post

Unit 3

Conditional Statements, Loops, and More Programming Fundamentals (20 days)

Objectives/Topics to Cover 

   Boolean and conditional operators

   “If” statements

   “For,” “while,” and “do-while” loops

   ASCII codes, char/String conversions, and char methods

   Binary, Hex, and Octal number systems

 

Teaching Strategies

While students develop more complex code using loops and conditional operators, attention will still be given to creating usable, efficient, and understandable code. Time will also be spent on methods for converting to and from various number systems. Most of the work in this unit will be spent in the computer lab.

The ethics and social implications discussion will be based on Chapter 3 of What is Code?. The main theme will be the practical and social aspects behind the development and popularity of various programming languages.

References/Readings

Blue Pelican Java, Lessons 8-14

Introduction to Programming Using Java, Sections 3.1-3.5

What is Code?, Chapter 3

Assignments/Labs

   Various exercises in the books

   Students develop a program that uses the Intermediate Value Theorem to estimate cube roots of values to the nearest thousandth.

   WeBWork assignments

   Comments on the blog post

Unit 4

Classes, Objects, and Arrays (25 days)

Objectives/Topics to Cover 

   Classes and objects

   Passing parameters

   Instantiating objects

   Class methods, state variables, constructors, signatures

   Definitions and uses of public, private,  static, and void

   Equality of objects, reassignment of objects, and setting objects equal

   Advanced String methods

   Arrays and array methods

   Sequence, selection, and iteration

   Computer ethics and social implications

Teaching Strategies

Students will practice creating classes with various types of constructor classes, variables, and methods. Although attributes such as “void” have been used in previous programs, time will be spent defining and going over the need for these types. Students will also experiment with instantiating objects and how assignments are treated when multiple labels are involved. With the introduction to arrays, they will also utilize “for” loops to start manipulating and displaying data.

 

The ethics and social implications discussion will be based on Chapter 4 of What is Code?. The main theme will be based on the following question: Will the skills learned in this class still be applicable after I (the student) graduate from college?

References/Readings

Blue Pelican Java, Lessons 15-19

Introduction to Programming Using Java, Sections 3.8-3.9

What is Code?, Chapter 4

Assignments/Labs

   Various exercises in the books

   Students develop a class for bank account objects. Then, they will create a method to display account information. These will be tested using a client program that instantiates multiple account objects and displays them one at a time.

   AP CSA Elevens Lab

   WeBWork assignments

   Comments on the blog post

Unit 5

Introduction to Object-Oriented Program Design and More Java Methods (30 days)

Objectives/Topics to Cover

   Encapsulation and information hiding

   Static methods and state variables

   Wrapper classes (including Integer and Double)

   Scanner class for file input

   Writing to text files

   Formatting numbers, Formatter class, and “printf”

   StringBuffer class and methods

   Boolean algebra, short-circuit evaluation, and DeMorgan’s Theorem

   Selection in more detail

   Computer ethics and social implications

Teaching Strategies

The concept of “the black box” will be defined and discussed, including the advantages of procedural abstraction. In the computer lab, students will be given scenarios for which: 1) static variables and methods are required for problem solving, 2) Java’s wrapper classes are required for creating objects when primitives are not desired, and 3) methods are required for reading and writing to files.

 

The ethics and social implications discussion will be based on Chapter 5 of What is Code?. The main theme will be based on the following question: Are there situations for which “enterprise programming” is a requirement?

 

References/Readings

Blue Pelican Java, Lessons 20-32

Introduction to Programming Using Java, Chapter 4

What is Code?, Chapter 5

Assignments/Labs

   Various exercises in the books

   Students create a “Student” class for objects that each contain a name, various grades, and a method for calculating final averages. They will also develop a “Section” class for objects that each contain an array of “Student” objects and a static method for writing student data to a file. If time permits, they will also include a method for creating “Student” objects based on a text file.

   WeBWork assignments

   Comments on the blog post

Unit 6

More About Objects and Object-Oriented Program Design (20 days)

Objectives/Topics to Cover

   Passing by value and by reference

   Parameter passing terminology and concepts

   Passing arrays to methods

   2-dimensional arrays

   Inheritance and polymorphism, overriding methods

   Use of this and super

   Interfaces (Comparable) and Abstract classes

   Object is the superclass of all classes

   Analyzing and testing software

   Error categorization and correction

   Exception handling with “Try” and “Catch”

   Computer ethics and social implications

Teaching Strategies

Students will be given examples for which primitives and objects (including arrays) are passed within and between methods. They will add lines to experiment with assigning values while comparing the outputs of all objects and primitives using system.out.println(). This will give them a chance to learn the difference between passing values and passing references and when each of these occurs in a program. It also serves as an introduction to debugging, because they will be examining the state of primitives and objects before and after various lines of execution. Students will work in the computer lab solving problems related to the remaining topics of this unit.

The ethics and social implications discussion will be based on Chapter 6 of What is Code?. The main theme will be based on the positive and negative effects of all electronic devices being connected to the internet.

References/Readings

Blue Pelican Java, Lessons 33-37

Introduction to Programming Using Java, Chapter 5

What is Code?, Chapter 6

Assignments/Labs

   Various exercises in the books

   AP CSA Picture Lab

   Students will be given “bad” code for which they will search for, categorize, and correct errors using the debugging tools in Eclipse IDE. They will also create “Try” and “Catch” blocks, assertion statements, and test classes (both unit and integration).

   WeBWork assignments

   Comments on the blog post

Unit 7

Standard Operations and Algorithms (25 days)

Objectives/Topics to Cover

   Introduction to Big-Oh

   Binary versus sequential searching

   Recursion

   Insertion, selection, and merge sort

   ArrayList and List interface

   Comparable

   Computer ethics and social implications

Teaching Strategies

Students will analyze algorithms and determine their Big-Oh values. In the computer lab, students will be given problems for which recursive methods are the most efficient solutions. They will also apply insertion, selection, and merge sorts to various scenarios and, given a sorting algorithm, predict the before and after state of a given array for each iteration. Students will be introduced to and use the ArrayList class and the List interface methods. There will also be a discussion of when an array is a better choice. If time permits, the remaining topics in Blue Pelican Java will be covered. However, since these topics are not on the exam, they will probably be covered in late May and June.

The ethics and social implications discussion will be based on Chapter 7 of What is Code?. The main theme will be based on the following question: What aspects of our lives should not involve code?

References/Readings

Blue Pelican Java, Lessons 38-42, 44, and 50 (some lessons may be added if time permits)

Introduction to Programming Using Java, Chapter 9

What is Code?, Chapter 6

Assignments/Labs

   Various exercises in the books

   Students will add to their previous programs written for bank accounts (see Unit 4 assignments). A new “bank” class will be created with methods for adding accounts, sorting accounts by various attributes, and searching for accounts. These methods will include the ArrayList class, List methods, a binary search algorithm, a merge sort algorithm, test methods, and other skills learned in this course.

   WeBWork assignments

   Comments on blog posts

Unit 8

Review (approximately 20 days)

Objectives

   Ensure students know what is coming on the AP Exam

   Earn a 5 on the AP Exam

References/Readings

Blue Pelican Java, “Golden Nuggets of Wisdom”

Assignments/Labs

   Students will complete one exercise per day in Blue Pelican Java leading up to the AP exam.

   Students will take the official AP Computer Science practice exam. After these are scored, students will review their answers, look for areas that need improvement, and learn more about the scoring process for the exam.


Please contact me if you have any questions or concerns.