- Course: [COE11, USTP CEA]
- Instructor: Jay L. Ginete, [email protected]
- Need help?
- Look through and create issues
- Email for help, or to set up a time to meet after work hours (5:00PM or later)
- CDO ITG FB Page Local FB group of devs, tech hobbyist and students
- ITG-JDK Java Dev Knot ITG-X focus group for Java
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.
- 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.
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.
All assignments are listed within the Course Outline.
If you're using GitHub Desktop, these general instructions will help:
- https://guides.github.com/activities/hello-world/
- https://try.github.io/levels/1/challenges/1
- https://help.github.com/desktop/guides/contributing/
These apply to real life, as well.
- Must apply "good programming style" learned in class
- Functions should be "short" (see Sandi Metz's rules for developers).
- Optimize for readability.
- For projects, use Object-Oriented Programming (obviously).
- Any borrowed code must be properly annotated.
Bonus points for:
- Creativity (as long as requirements are fulfilled)
- Anything listed under
BONUS
in the README of the exercise.
- Late submissions result in only half credit.
- Any submission past 3 days the due date result in NO CREDIT
- 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.
-
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.
-
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.
-
- Add a proper picture so I can identify you
- Use your real name
- In your Bio should contain you STUDENT ID number
-
- Work1 Assigned uses the student_gpa_java repo
- This is a 0 or 10 kind of assignment.
- Introduce Maven so we can download Java libraries from the internet
- Introduce testing using TestNG which we get via Maven
NOTE: Due to Lab 701 not having internet, these lessons are moved to Jan 2017
- Perform Mkyong's TestNG's tutorial
- Do the first 3 tutorials at least
- Add test to student_gpa_java repo.
- This work is scored on a 0-10 scale.
- Score is based on results of test and timeliness of submission.
'''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.
- 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.
-
Create a repo for the Selection Problem with Github - this is graded - Due Friday, Jan 13
- Submit your working code as assignment - https://classroom.github.com/assignment-invitations/d6eec4a648d4eb01a3d26397160fdcfa
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.
Flash flood - No class
Introduce User Input to students (ie. Readline)
-
Show example for accepting input from the keyboard.
- BufferedReader
- Scanner
- Command line Arguments
-
Include try-catch structure
-
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
-
(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.
- https://help.github.com/articles/adding-a-remote/
- https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
Exam dates: Jan 31 6:00PM - Lab
- Command line and Git basics
- Java Language basics
- Inheritance, Overloading, & Overriding
- Create teams (Class groups) - 4 members randomly
- Introduction to Web: Browsers, Servers and the Wire
- Introduction to Maven
- Introduction to Spark
- First project with Maven for Spark -> "Hello World" example
- Add Freemarker template -> Simple Bindings and CSS
- 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
- Object-Oriented Design by Peter Coad & Edward Yourdon link - if available else we'll have to make do with online resources
- sharing code snippets: gist.github.com
- alternative to sharing snippets: hackpad
- asking questions: Stack Overflow
- Markdown Online Preview
- Visual Studio Code
- Apache Maven
- Git and GitHub
- GitHub Pages
- Github guides
- Assignment/Labwork – 40%
- Periodical Exam - 60%
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.
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.