This document provides an overview of a 5-day Java programming workshop. It introduces the course instructor and outlines the workshop's aims, topics, teaching methods, and learning resources. The workshop will cover Java fundamentals, control flow, data structures, and design patterns. Students will learn through lessons, practical examples, cohort Q&A sessions, and a group project. Additional learning resources include course materials, textbooks, documentation, and other online sources. Feedback will be gathered through a pre-workshop survey and continuous improvement of the course.
1. Programming in Java
5-day workshop
Workshop
Introduction
Matt Collison
JP Morgan Chase 2021
PiJ0.1: Workshop Introduction
2. Session overview
Welcome
• Round table introductions
Module Overview
• What is the course aim?
• What will we cover?
• How do I engage with learning on this course?
Pre-workshop survey and Q&As
3. Introduction
Dr Matt Collison
Lecturer in Computer Science
m.collison@exeter.ac.uk
Research interests
• Computer Science
pedagogy
• Data systems
• Bioinformatics
• Microbiome research
Teaching
• ECM1400 Programming
• ECM2434 Software
Engineering Group
Project
• BSc Computer Science
Programme director
4. Aim…
…to introduce Java as a new programming
language and provide a foundation in the
object-oriented programming paradigm
5. What does that look like?
• Be familiar with the fundamental concepts and tools for
programming and Java
• Be capable of problem solving with code, specifically Java
• Be able to decompose a problem
• Learn to be self sufficient
• Know how to ask the right questions – almost all questions
have been asked before usually in a different way
7. Fundamentals
The basic constructs that make
up the building blocks of python
A set of techniques that can be employed
to overcome common challenges.
Design Patterns
Data Structures
The way we can access and
store structured information.
Control Flow
How to order the execution of
your code and algorithms.
Each dimension requires a different
type of knowledge and skills.
Individuals can excel at any one
A competency
framework for programming
8. Foundations
• What is Java and the JVM
• Variables and programs
• Primitive types and literals
• Classes and objects
• Methods
• Constructors
• Inheritance and privacy
9. Control Flow
• if statements
• switch case
• for loops
• while loops
• Conditional logic
• Operators
13. What can you expect?
Teaching methods and materials
14. Competency-based learning
• Lessons – introduce the concepts
• The known knowns – Here is X
• Practical – provide practical examples
• The known knowns and known unknowns – Experimenting with X
• Cohort Q&A sessions – clarification
• The known unknowns – I don’t understand X
• Group project – exploratory problem-based learning
• The unknown unknowns
19. Learning resources
The workshop homepage
https://mcollison.github.io/JPMC-java-intro-2021/
The course materials
https://mcollison.github.io/java-programming-foundations/
• Session worksheets – updated each week
20. Additional resources
• Think Java: How to think like a computer scientist
• Allen B Downey (O’Reilly Press)
• Available under Creative Commons license
• https://greenteapress.com/wp/think-java-2e/
• Oracle central Java Documentation –
https://docs.oracle.com/javase/8/docs/api/
• Other sources:
• W3Schools Java - https://www.w3schools.com/java/
• stack overflow - https://stackoverflow.com/
• Coding bat - https://codingbat.com/java
Most people put a picture of their face but you can already see that so here are my dogs.
I really enjoy speaking to students. I specialise in teaching. Lecturing is difficult to engage with each student so please come and talk to me.
Timing and perspective.
It doesn’t look like other subjects
Asking questions in Google is crucial to being a good programmer
Time and time again you will come up against a problem that you simply can’t answer. Someone else will find the answer because they knew how to ask the right question
All competencies are linked and overlap.
They each require different
- knowledge and
- skills
Foundations is about understanding how to define the language.
Declaring the basics.
Knowing what the rules of the language are.
Information heavy knowledge based things.
Like learning the words of a new language.
Control flow is about how to control the language
The contructs of the language. How to design algorithms and behavior.
There are some rules but this is often bespoke. Decomposing a problem. Control behavior
Data structures is about how to integrate the algorithm with stuff.
The best way to capture information. Often optimization and imposing structure.
The difference between ordering things and doing thing in an order.
Examples of good practice for (relatively) complex problems.
Allow you to programme in a more resilient, reliable
Condense it all down into something useful and practical.
Pragmatism is a key principle in the development of python
More creative guidelines. Examples of how these have been addressed. Pythonic design patterns are well defined.
Actually these are hierarchical. As you will notice there is depth and breadth. If you have learnt some of these before you will have to practice applying them.
Learn the limitations and practicalities rather than the definitions.
Workshops are more practical so it is difficult to know if you know it but you know what you are trying to achieve. One to one help for this phase.
Many of you will be comfortable using computers although few of you will be confident programmers. The module aims to give you the basic knowledge and confidence to get stuck in and make a start.
Once you’ve got a bit of confidence you’ll know enough to be dangerous. You will be able to make some headway although you will inevitably make some mistakes along the way. Programming will happen although it probably won’t be fluent because much of what you are doing is still new.
By the end of the module both you and I will be confident in your programming abilities
All resources hang from the ELE pages.
How many of you have looked through them?