Giter Club home page Giter Club logo

syllabus's Introduction

Course Description

This is an Object Oriented programming course with Java. Topics include data encapsulation, inheritance and name spacing. Discover some of the lesser-known, yet useful, features of the language, such as how to debug Java problems from the command line.

We will include basic software testing to confirm correctness and behavoir of programs.

Computers are provided in the lab, though you are encouraged to bring a laptop for in-class exercises.

Prerequisites

  • Good computer skills (ie. can locate folders and use a command line)
  • Understanding of variables, data types, control flow, and basic function usage in C
  • Basic knowledge of HTML, and at least basics of CSS

These won't be enforced by the instructor, but you will be pretty lost without understanding those concepts.

Refer to the Beginner material for links.

Refer to Workflow with Github if you need help in using git or GitHub.

Course Overview

We will be learning how to use object oriented concepts to develop solutions that can be modeled into code. We will try to contrast Python with Java if possible. Topics to be covered are:

  • Abstraction
  • (Class based) Inheritance
  • Encapsulation
  • Overloading and Overriding
  • Composition
  • Test Driven Development
  • Source Versioning
  • Basics of Maven

Topics will be demonstrated through live-code examples/slides. Additional exercises will completed in-class.

Homework/Projects

All assignments are listed within the Course Outline.

Workflow with Github

If you're using GitHub Desktop, these general instructions will help:

Requirements

These apply to real life, as well.

Extra Credit

Bonus points for:

  • Creativity (as long as requirements are fulfilled)
  • Anything listed under BONUS in the README of the exercise.

Late Submissions

  • Late submissions result in only half credit.
  • Any submission past 3 days the due date result in NO CREDIT

Work deadlines

  • Each Friday 11:59PM is the deadline for each week's class work unless specified
  • The checking of work is done against your github account and repo. This is an automated process.

Course Outline

Class 1 (Dec 5-9)

  1. Setup

    • How many people are comfortable with Git/GitHub?
    • Double check everyone has signed up
    • Install Git (if needed)
      • If you are comfortable with Git already, you can skip this.
  2. Main Excercise

    • Git basics (with Github)

Note: Due to lack of time, I didn't get to cover other key github concepts like:

* Forking
* Pushing and pulling from a remote repository (This is related to forking)

You'll have to learn this on your own. Please refer to the github guides in the Github section of this syllabus.

Homework

Class 2 (Dec 12-16)

  1. Introduce Maven so we can download Java libraries from the internet
  2. Introduce testing using TestNG which we get via Maven

NOTE: Due to Lab 701 not having internet, these lessons are moved to Jan 2017

Homework

Class 3 (Jan 9-13 2017)

'''Note:''' Due to the continued lack of internet access to the lab. I'm forced to modify the course. I cannot teach modern Java in these conditions but I guess we'll have to make do.

  1. Code up the Selection Problem Excercise
    • Introduce the concept of a Constructor method
    • Code in repo must compile without errors; This is an automated process.

Homework

  1. Create a repo for the Selection Problem with Github - this is graded - Due Friday, Jan 13

    Note: You need to accept the assignment to gain access to an EMPTY repo. You'll need to then PUSH your repo into this new empty repo. Refer to this documentation about git remotes.

Class 4 (Jan 16-20)

Flash flood - No class

Class 5 (Jan 23-27)

Introduce User Input to students (ie. Readline)

  1. Show example for accepting input from the keyboard.

    • BufferedReader
    • Scanner
    • Command line Arguments
  2. Include try-catch structure

Lab + Homework

  1. With the Command line Arguements code example as based

    • Add a loop that will display all passed Arguments
    • Display count on how many arguments passed
    • Name the source file: project3io.java
  2. (Bonus)In a seperate Java source file, write a program:

    • That will accept user input. Input is a number
    • You will use that number to as height of a Pyramid
    • Name the source file: project3ioBonus.java

Submit code as assignment - https://classroom.github.com/assignment-invitations/7b9155ddbf5146685d9949ad51a5eae9

Note: You need to accept the assignment to gain access to an EMPTY repo. You'll need to then PUSH your repo into this new empty repo. Refer to this documentation about git remotes.

Midterm Coverage

Exam dates: Jan 31 6:00PM - Lab

Coverage

  • Command line and Git basics
  • Java Language basics
  • Inheritance, Overloading, & Overriding

Class 6 (Feb 6-10)

  • Create teams (Class groups) - 4 members randomly

Web development with Java

  • Introduction to Web: Browsers, Servers and the Wire
  • Introduction to Maven
  • Introduction to Spark

Lab

  • First project with Maven for Spark -> "Hello World" example
  • Add Freemarker template -> Simple Bindings and CSS

Pairing Tips

  • Three people is possible, but two works best
  • Agree on an editor and environment that you're both comfortable with
  • The person who's less experienced/comfortable should have more keyboard time
  • Switch who's "driving" regularly
  • Make sure to save the code and send it to both people

Resources

Required Reading

  • Object-Oriented Design by Peter Coad & Edward Yourdon link - if available else we'll have to make do with online resources

Recommended Reading

Other Lists

Tools

Beginner Material

GitHub

Grading

  • Assignment/Labwork – 40%
  • Periodical Exam - 60%

Statements on Plagiarism

USTP

USTP takes plagiarism very seriously and regards it as a form of fraud. The definition of plagiarism that has been adopted by the School of Continuing and Professional Studies is as follows: "Plagiarism is presenting someone else's work as though it were one's own. More specifically, plagiarism is to present as one's own words quoted without quotation marks from another writer; a paraphrased passage from another writer’s work; or facts or ideas gathered, organized, and reported by someone else, orally and/or in writing. Since plagiarism is a matter of fact, not of the student's intention, it is crucial that acknowledgement of the sources be accurate and complete. Even where there is not a conscious intention to deceive, the failure to make appropriate acknowledgement constitutes plagiarism. Penalties for plagiarism range from failure for a paper or course to dismissal from the University.

Instructor

Reuse and building upon ideas or code are major parts of modern software development. As a programmer you will never (or try not to) write anything from scratch. This class is structured such that all solutions are public. You are encouraged to learn from the work of your peers. I won't hunt down people who are simply copying-and-pasting solutions, because without challenging themselves, they are simply wasting their time and money taking this class.

Please respect the terms of use and/or license of any code you find, and if you reimplement or duplicate an algorithm or code from elsewhere, credit the original source with an inline comment.

syllabus's People

Contributors

killertilapia avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.