Duration: 1 – 6 Days
Course Overview
This training consists of a series of one day sessions designed to help existing programmers to develop their problem solving skills.
How can I attend my course?
Course Content
Module 1 (Day 1)
• Introduction to problem solving
• Review of some general problem solving techniques
• The importance of planning
• Identifying input, process and output
• Problems involving sequence, selection and repetition
Module 2 (Day 2)
• The importance of data structures
• Problems where arrays are most appropriate
• Storing, searching, sorting
• Top down design
• Stepwise refinement
• Using functions
• Building up a toolkit of problem solving techniques:
– reviewing solutions in critical but constructive way
– solving the same problem in different ways
– getting past initial ownership; the importance of re-writing code
Module 3 (Day 3)
• More data structures including stacks, queues, linked lists and trees
• Choosing the right tools to solve a problem
• Static versus dynamic data structures
• Pointers and memory management
• Understanding what goes on behind the language
• A brief review of how programs and data are stored and accessed; the stack and the heap
• Why think about memory and how a language works; solving a problem is the first stage, ensuring an implementation in a computer language can and will work is the next
Module 4 (Day 4)
• Introduction to Object Oriented Programming
• Classes and objects
• Object oriented analysis and design; problem solving with objects
• Re-factoring
Module 5 (Day 5)
• More advanced object oriented techniques
• Inheritance and polymorphism
• Abstract classes
• Interfaces
Module 6 (Day 6)
• Other problem solving techniques
• Recursion
• Code re-use
• Design re-use; introduction to the idea of patterns
• Working as a team:
– the importance of a plan based upon the requirements
– identifying strengths and weakness of the members of the team
– how will you know you have finished; introduction to the idea of test driven development
Further Information:
• The presentation style will be a mixture lectures, practical sessions and discussions.
• Many examples will be presented using pseudo code that can then be converted easily into any programming language.
• Other examples will be presented using a language such as Javascript.
• Any specific language syntax used will be reviewed as required to reflect the knowledge of the attendees.
• At the end of each session further problems will be suggested for the attendees to work on to apply and develop their problem solving skills.
• These problems will be reviewed at the start of the next session.
• It is assumed that the attendees will have time between sessions to attempt the problems and decide what they understand and what they need to ask.
• Course material will be modified to suit the needs of the attendees; having a series of short sessions spread over a number of weeks makes this possible.
COURSE PREREQUISITES
It is assumed that attendees will have some programming experience and a working syntactic knowledge of a modern programming language.