From charlesreid1

Chapter 1: Intro to Java

Sections:

1.1 Basic computing concepts

1.2 And now, Java

1.3 Program errors

1.4 Procedural decomposition

1.5 Case study: DrawFigs

Note: the first chapter is definitions-heavy.

Section 1.1: Intro to Java

Definitions

  • Algorithm
  • Program
  • Hardware ("Hardware: the part of the computer that you can kick")
  • Software
  • Digital
  • Binary
  • Program execution
  • Compiler
  • Java Virtual Machine (JVM)
  • Java Runtime Environment (JRE)

Material

Things to cover:

  • Java class libraries (standard library)
  • Java programming environment
  • Java Hello World program
  • Eclipse editor ("Why can't Java programmers see well?" "Because of the Eclipse.")
  • Console window/command line

Quotes

1995: Oracle: "Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture-netural, portable, high-performance, multithreaded, dynamic language."

Life Skills

Life skills track:

  • Pay attention and FOCUS
  • RTFM
  • Follow directions and read carefully
  • Whether it's your compiler, or your instructor, or your fellow students - pay attention to what's being said
  • Skill will pay off when you start to compile your Java programs

Section 1.2: Java

Materials

Class

  • Every program, all Java code, lives in a class
  • Class header
  • Class methods
  • Statements
  • String literals
  • System.out.println
  • Escape sequences
  • print vs println

Complex example: draw figures

  • ASCII diamond, X, rocket

Code comments, white space, readability:

  • Comments

Profiles

  • James Gosling - Oracle, tech companies, open source vs. enterprise, hackers vs suits

Section 1.3: Syntax Errors

Material

Different types of errors:

  • Where the errors happen - the normal process - (code) --> (compiler) --> (bytecode)
  • Errors at compiler level - syntax errors - book lists common syntax errors
  • Errors at code level - bugs - errors in the logic of the program (wrong idea, or right idea but implemented wrong)

Pofiles

  • Grace Hopper

Section 1.4: Procedural Decomposition

Materials

Decomposing complexity:

  • Decomposition concept: split into functions, tasks, subtasks

C is very verb-oriented, action-oriented

Java is very noun-oriented, object-oriented

Procedural programming:

  • Function-based, action-based programming
  • How to decompose task of baking a cake
  • Static methods (help serve function of.......... functions)

Object oriented programming version:

  • c = new Cake(); c.make()
  • Encapsulating complexity of the object
  • Example in book: drawBox, drawTopX, drawBottX

Flow control

  • How control changes with function calls
  • Objects: with OOP it becomes more complicated to follow the flow of the program
  • Procedural programs and interpreted languages: you just start at the top and go from there
  • Objects: "when is this code actually used?" (have to dive in to see)
  • Learning to follow program flow control
  • Flow control allows you to abstract away detail
  • Example runtime error

Definitions

  • Decomposition
  • Iterative enhancement
  • Static method
  • Method call
  • Flow control

Life Skills

Life skills track:

  • Cover non-word representations of programs

(Give them a crypto puzzle, but we haven't introduced any crypto or codes just yet)

Section 1.5 : Case Study with DrawFig

Material

Modularization of drawing program

  • Breaking int pieces - not just the box, or the x, or the rocket
  • but breaking down into common components, common to all parts of the program
  • Take hello world program...
  • Modularize it, make it reusable...

Chapter 1 Summary

Worksheet: definitions from book on one side (quiz material)

Source code for a procedural program (fizz baz foo bar buzz bam) on the other

There are N bugs, find the N bugs (self-work)

Discuss the program flow with a partner (group work)

How do we represent this program in a clear and concise way?

Transform foo bar into get ready for school - proper names can help clarify understanding

Lecture: broken up into 1.5 parts

  • Broad brush-stroke over chapter 1
  • Memorize definitions
  • Know XYZ for quiz
  • Spend a majority of time on in-class exercises
  • FOCUS: KNOW HOW TO RUN/SET UP HELLO WORLD
  • FOCUS: KNOW DEFINITIONS
  • FOCUS: KNOW FUNCTIONS AND PROGRAM FLOW
  • FOCUS: KNOW ERRORS/EXCEPTIONS

Quiz/exam/assessment material:

  • Hello world, basics, public static void main, syntax
  • Definitions matchup
  • Functions questions
  • Program flow questions
  • Exceptions: spot the bug... spot logical errors... spot syntax errors...

Need to make beginnings of class difficult, to send the message that they can't let it slide

Deliverables

Intro to Java

  • Know how to set up and run hello world
  • How does it work, role of compliler vs editor
  • JRE vs JVM vs JDK
  • Public static void main
  • EEverything is a class
  • Filename = class name
  • Correct syntax, protected keywords

Definitions

  • algorithm, program, hardware/software, digital, binary, program execution, compiler, JVM, JDK, JRE, class header, class methods, statements, string literals, system.out.println, escape chars, print vs println, exception, decomposition, flow control, iterative enhancement, static method