- Coding is fun, useful, creative, rewarding and anyone can learn it given enough interest.
- We'll go into detail about programming to achieve a strong knowledge of core concepts.
- We'll see the importance of good code: indentation, meaningful names, documentation, avoid repetition, tests, ...
- Two classes of 2h per week so you have time to assimilate the course and combine it with work.
- Small class group (~5 students) to better attend your needs.
- Exercises to practice at home, with my help when you need it.
- Up-to-date technologies that are in demand: git, angular, sass, flexbox, Java 8, reactive streams, SQL, No-SQL, ...
- I care about what you learn.
- My name is Ferran Maylinch.
- Back-end, front-end and mobile developer for +10 years, currently at GymForLess.
- I've worked as a teacher at Ironhack and Ubiqum.
- Studied at UPC, where I also started teaching.
- I like music, movies, sports and videogames. Oh, coding and teaching too!
You may bring your project idea, or I can suggest one. I can tailor the exercises to help you build your project step by step.
- Processor (CPU)
- Memory (HD and RAM)
- Input and output devices
- Operative system
- File system
- Command line (terminal)
Intro to programs
- High and low level Languages
- Instructions/statements, flow
- Code editors: Sublime, Brackets, Atom
- First Hello World program
- Definition, purpose, syntax, naming
- Types: number, text, boolean
- Values: literal, calculated
- Declaration, assignment
- Definition, type, value
- Math operators:
+ - * / %
- Comparison operators:
== != < > <= >=
- Logic operators:
! && ||
+= -= *= /=
Advanced editors (IDEs)
- IntelliJ IDEA
- Definition, purpose: avoid repetition, organise code
- Declaration vs call
- Parameters, arguments
- Return type, return value
- Pitfall: printing is not returning
Version control systems
- Code repositories, versions, collaboration
- Git (tool)
- GitHub (site for repositories)
- It's easy to break code (Google, Stack Overflow, ...)
- Tests, automated tests
try catch finally
Here you know the most important concepts of programming (really) and you can create simple programsClasses and objects
OOP (Classes, objects)
- Class (type)
- Object (value)
- Fields/properties (variables inside a class)
- Methods (functions inside a class)
- The implicit variable
- Class members (
OOP: pointers and inheritance
- Arguments by value or reference
- Lists and arrays
- Importance of naming
- Divide and conquer
- Very simple exercises: use variables, operators,
- Intermediate exercises: organise code into functions
- Complex exercises: detect classes (concepts), methods and properties
Useful JDK classes
- Date, Math, String, wrappers (Integer, Double, etc)
- IO streams, readers and writers (e.g. for files)
- Use a library:
- Store objects as
JSONusing another library:
Callbacks and reactive streams
- Callbacks (functions as arguments)
- Java 8 lambdas
- Java 8 reactive streams
- Map and filter collections (using custom code and streams)
Advanced programming concepts
- Design patters (e.g. observer, template)
- Kinds of classes (DTO, BO, util)
- Regular expressions
- Reflection (optional)
Here you're a programmer, able to build command-line applications, and may choose any path you likeFrontend (web)
- Browsers (display HTML/CSS)
- HTML (XML) : content
- CSS : style and layout
- Flexbox : easier layout
- CSS Media queries, for responsive layout
- Bootstrap : responsive layout and style
Tools and frameworks
- Google Maps
Here you can build a web interface for your applicationFull stack
Connect frontend and backend
- Frameworks (Spring, Play, Dropwizard, Grails, JSF, ...)
- Example: jQuery/AngularJS + API Dropwizard
- Intro to DBs: tables and SQL
- JDBC: SQL from Java
- JPA: "automatic" SQL mapping
- No-SQL databases, MongoDB
Publish complete project to Heroku
- Deploy (Heroku)
Here you can build a complete web application with a database and put it online
Why I organized the contents this way
Many courses start with frontend topics like HTML/CSS. That may be more visually appealing and (deceptively) easier to grasp, but I think that it is important to first build a solid foundation by learning the core programming concepts. With that knowledge in your toolbelt, you will be better prepared to learn any languages, tools or frameworks you need to reach your goals. Moreover, you will enjoy programming much more.
Interested? Any question? Write me to firstname.lastname@example.org!