Fall-20 Programming Activities

We are heading for the last quarter of a strange and daunting year, a year with so many difficulties and challenges. Yet, whatever may be happening around we need to keep going, keep learning, and keep preparing for whatever the future may bring.

So, what’s on the plate for the Fall?

There are 3 key areas I believe will contribute to the efforts of my students and will improve their skills and experience:

  1. Algorithmic thinking: Knowledge of the keywords and syntax of a programming language is not enough. We need to train our problem solving muscles frequently. Hence, we will solve a number of challenges every week, we will discuss the different solutions and approaches and will document the details. This way by the end of the year we will solve at least 24 problems. The platform to be used for this activity is: LeetCode.
    Suggested readings:
    Grokking Algorithms An Illustrated Guide For Programmers and Other Curious People
  2. Programming Principles: We usually learn the “what” but not always the “why” things are used in a specific way. This is what we will try to achieve here. In a weekly discussion we plan to cover the basic Object Oriented Programming principles, the SOLID principles for software development, and the most important design patterns. All in a Head First way with hands on examples.
    Suggested readings:
    Clean Architecture: A Craftsman’s Guide to Software Structure and Design
    Clean Code: A Handbook of Agile Software Craftsmanship
    Head First Design Patterns
    Head First Object-Oriented Analysis and Design
    Head First Software Development
  3. Software Development: Well, this takes time so we will focus on back or front end web development mostly (but mobile or desktop development is OK, too), depending on the interests of each student getting an idea of the rest of the stack at the same time. A lot of diversity here (challenging but I like that students have an opinion on what they want to do). There will be projects in Java, C#, Python, PHP, JavaScript, and C++. The idea is to build something very simple at first in order to demonstrate techniques and ideas. Those simple projects will be documented so that future newcomers will be able to catch up. Once simple projects will be complete, new, more challenging projects will get started for each technology.

Whatever we do will be documented and the code will be maintained on GitHub. So, besides the progress and skills for each one of the participants we expect to prepare important material for the future.

On to a Problem Solving Fall 2020!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: