SoC2020 – Week 8

Aug, 03 – Aug, 07

Online Meetings:
1. Tuesday Aug, 04 # 12:00 – 15:00 EEST (11:00 – 14:00 CEST) General meeting
2. Thursday Aug, 06 # 17:00 – 20:00 EEST (16:00 – 19:00 CEST) General meeting(*)
(*) Thursday meeting may start later or move to Friday.
3. Ad hoc meetings for projects

Week 7 highlights:
Planned a new idea: MovieBuildings (more soon) to be implemented with React and Laravel.
Hangman on Android completed, needs some more refactoring and polish the views.
Decided to take a look at Xamarin as well.

Programming:
Keep solving problems as frequently as possible on:
LeetCode, CodeWars, Edabit

Reading Papers:
On Thursday we will discuss again:
Dominic DiFranzo D., Gloria-Garcia K. (2017) Filter bubbles and fake news. XRDS: Crossroads, The ACM Magazine for Students, Vol.23, No.3

Design Patterns:
Implementing the Decorator, Factory, and Singleton patterns.
Implementations are posted here: https://github.com/soc-2020/design-patterns

Robotics and Automation:
This week we will continue experiments with environment sensors and servo motors.

Google Hashcode:
Implementation of Self-driving rides challenge started in Python: https://github.com/soc-2020/hashcode-cars-py
A Java solution is ongoing.

Tutorials:
Tutorials will repeat again on:
Git and GitHub, Laravel, React

Projects:
a. Building “Hangman” (Android, React, and plain JavaScript app using some open API for words. Also a Python and a JavaFX version ongoing)
JS version here: https://github.com/soc-2020/hangman-js
b. “Trello Clone” stuck. Needs volunteers.
c. Simple Windows Forms app with C++ completed.
d. Started a Todo List with Laravel. Will continue during this week. https://github.com/soc-2020/laratodo
e. Starting implementation for MovieBuildings a new project using Laravel, React, and Android/Java. Join for details.

New experiments
a. Xamarin
b. Unreal

MOOCs
Ongoing: A number of students started attending the following Coursera specializations:
1. Python for Everybody (taught by the amazing Charles Severance, a.k.a Dr.Chuck)
2. Applied Data Science with Python
They are both excellent and highly recommended.

SoC2020 – Week 7

Jul, 27 – Jul, 31

Online Meetings:
1. Tuesday Jun, 30 # 12:00 – 15:00 EEST (11:00 – 14:00 CEST) General meeting
2. Thursday Jul, 02 # 17:00 – 20:00 EEST (16:00 – 19:00 CEST) General meeting
3. Ad hoc meetings for projects

Week 6 highlights:
We had an inspiring discussion with a distinguished graduate, mrs.Valbona Cucuri.
A real world project idea was discussed and will be implemented.
Started Kali Linux experiments.

Programming:
Keep solving problems as frequently as possible on:
LeetCode, CodeWars, Edabit

Reading Papers:
On Thursday we will discuss:
Dominic DiFranzo D., Gloria-Garcia K. (2017) Filter bubbles and fake news. XRDS: Crossroads, The ACM Magazine for Students, Vol.23, No.3

Design Patterns:
Implementing the Decorator, Factory, and Singleton patterns.
Implementations are posted here: https://github.com/soc-2020/design-patterns

Robotics and Automation:
This week we will make some experiments with environment sensors and servo motors.

Google Hashcode:
Implementation of Self-driving rides challenge started in Python: https://github.com/soc-2020/hashcode-cars-py
A Java solution is expected to start this week.

Tutorials:
Tutorials will repeat again on:
Git and GitHub, Laravel, React

Projects:
a. Building “Hangman” (Android, React, and plain JavaScript app using some open API for words. Also a Python and a JavaFX version started)
JS version here: https://github.com/soc-2020/hangman-js
b. We will do some experiments on “Trello Clone” (Full Stack Web Application and Mobile version in the future)
c. Building a simple Windows Forms app with C++.
d. Started a Todo List with Laravel. Will continue during this week. https://github.com/soc-2020/laratodo
e. Starting a new real-life project using Laravel, React, and Android/Java. Join for details.

MOOCs
Ongoing: A number of students started attending the following Coursera specializations:
1. Python for Everybody (taught by the amazing Charles Severance, a.k.a Dr.Chuck)
2. Applied Data Science with Python
They are both excellent and highly recommended.

SoC2020 – Week 6

Jul, 20 – Jul, 24

Online Meetings:
1. Tuesday Jun, 30 # 12:00 – 15:00 EEST (11:00 – 14:00 CEST) General meeting
2. Thursday Jul, 02 # 17:00 – 20:00 EEST (16:00 – 19:00 CEST) General meeting
3. Ad hoc meetings for projects

Alumni Speech:
On Thursday Jul, 23 15:00 (EEST) / 14:00 (CEST) we will have a discussion online with a distinguished graduate, mrs.Valbona Cucuri.

Programming:
Keep solving problems as frequently as possible on:
LeetCode
CodeWars
Edabit

Reading Papers:
For this week we read and discuss:
Dominic DiFranzo D., Gloria-Garcia K. (2017) Filter bubbles and fake news. XRDS: Crossroads, The ACM Magazine for Students, Vol.23, No.3

Design Patterns:
Observer Pattern implemented: https://github.com/soc-2020/design-patterns
Implementing the Decorator pattern
and looking at compound patterns and the Model-View-Controller Architecture.

Robotics and Automation:
Experimenting with environment sensors.

Google Hashcode:
Keep working with Self-driving rides challenge.
A Java solution and a Python solution are ongoing.

Tutorials:
Tutorials will repeat again on:
Git and GitHub
Laravel

Projects:
a. Building “Hangman” (Android, React, and plain JavaScript app using some open API for words. Also a Python and a JavaFX version started)
JS version here: https://github.com/soc-2020/hangman-js
b. We will do some experiments on “Trello Clone” (Full Stack Web Application and Mobile version in the future)
c. Building a simple Windows Forms app with C++.
d. Started a Todo List with Laravel. Will continue during this week. https://github.com/soc-2020/laratodo

MOOCs
Ongoing: A number of students started attending the following Coursera specializations:
1. Python for Everybody (taught by the amazing Charles Severance, a.k.a Dr.Chuck)
2. Applied Data Science with Python
They are both excellent and highly recommended.

SoC2020 – Week 5

Jul, 13 – Jul, 17

Several activities are proceeding very well and some others don’t. So we focus on what seemed more interesting for the participants so far.

Online Meetings:
1. Tuesday Jun, 30 # 12:00 – 15:00 EEST (11:00 – 14:00 CEST) General meeting
2. Thursday Jul, 02 # 17:00 – 20:00 EEST (16:00 – 19:00 CEST) General meeting
3. Ad hoc meetings for projects

Programming:
It is important to practice coding daily, so keep using
LeetCode
CodeWars
Edabit
And solve problems frequently. 

Reading Papers:
For this and the next week we read:
Dominic DiFranzo D., Gloria-Garcia K. (2017) Filter bubbles and fake news. XRDS: Crossroads, The ACM Magazine for Students, Vol.23, No.3

Design Patterns:
Strategy Pattern implemented: https://github.com/soc-2020/design-patterns
Implementing the Observer pattern
and studying the Decorator pattern.

Robotics and Automation:
Plan to experiment with environment sensors.

Google Hashcode:
Keep working with Self-driving rides challenge.
No valid solution so far.

Tutorials:
Tutorials will repeat again on:
Git and GitHub
Laravel

Projects:
a. Building “Hangman” (Android, React, and plain JavaScript app using some open API for words. Also a Python and a JavaFX version started)
JS version here: https://github.com/soc-2020/hangman-js
b. We will do some experiments on “Trello Clone” (Full Stack Web Application and Mobile version in the future)
c. Building a simple Windows Forms app with C++.
d. Started a Todo List with Laravel. Will continue during this week. https://github.com/soc-2020/laratodo

MOOCs
A number of students started attending the following Coursera specializations:
1. Python for Everybody (taught by the amazing Charles Severance, a.k.a Dr.Chuck)
2. Applied Data Science with Python
They are both excellent and highly recommended.

Laravel ToDo List – Part 1

Yet another todo list! Too common but it works well in order to learn a framework.

This 1st part is a very simple implementation with just one user and not any styling. The goal is students to become familiar with the Laravel framework and learn the basics of the Model-View-Controller architecture. Initial design is pretty simple and will look like this:

The code for this example is at:
https://github.com/soc-2020/laratodo – Tag: v1.0

Prerequisites:
1. A web server stack like, XAMPP, AMPPS, MAMP, Laragon, or WAMP.
2. Composer (for Windows there is an installer available)

So here we go:

1. Create a fresh Laravel project:
composer create-project --prefer-dist laravel/laravel laratodo
Then cd into the project’s folder.

2. Create a MySQL Database. Select any name you like, we called it laratodo and grant all privileges to a user on this database.

3. Edit the .env file and update the database credentials, for example:
DB_DATABASE=laratodo
DB_USERNAME=user
DB_PASSWORD=1234

4. Now the application knows how to connect to the database. So we can create the tasks table. In order to do so create a migration:
php artisan make:migration create_tasks_table --create=tasks
In the migration file created, add the required fields for name (varchar) and completed (boolean):
$table->string("name");
$table->boolean("completed")->default(false);

Then run the migrate command to create the table. Two other migrations are already there by Laravel, users and failed_jobs and will create the respective tables:
php artisan migrate

5. Create a Model for this table named Task. Models are created by default in the app directory but might be better to put them in a Models directory. So create a directory Models under app and then run the following command to create the model:
php artisan make:model Models/Task

6. The application will have the following routes for the moment:
/
/tasks/completed
/task/add
/task/complete
/task/delete
/task/undo

These routes are defined in the routes/web.php file.

7. Create a controller named TodoController. This controller is referred by all routes.
php artisan make:controller TodoController

8. Add the methods: home, task_add, task_complete, task_delete, task_undo, and tasks_completed for the respective routes.
The code for these methods can be found in the TodoController at the app/Http/Controllers directory.

9. Create the views. Here we use the blade templating system and create a template.blade.php file which contains the basic structure of any page and yields what specific content each page wants to add.
The pages home.blade.php and completed.blade.php extend the template and add their content at the respective sections.
Views are located at the resources/views directory.

SoC2020 – Week 4

Jul, 06 – Jul, 10

Online Meetings:
1. Tuesday Jun, 30 # 12:00 – 16:00 EEST (11:00 – 15:00 CEST) General meeting
2. Wednesday Jul, 1 # 12:00 – 13:00 EEST (11:00 – 12:00 CEST) Git and GitHub tutorial
3. Wednesday Jul, 1 # 13:00 – 14:00 EEST (12:00 – 12300 CEST) Laravel tutorial – Trello
Clone project
4. Thursday Jul, 02 # 16:00 – 20:00 EEST (15:00 – 19:00 CEST) General meeting
5. Friday Jul, 03 # 18:00 EEST (17:00 CEST) Hangman project

  1. Programming Weekly:
    Two problems from LeetCode to be solved:
    a. (Easy) Reverse Bits   
    b. (Medium) Restore IP Addresses    
  2. Read a Paper Biweekly:
    Keep reading:
    Resor E. (2019) Finding the Local n Locations: Working with GPS non-use in Nairobi, ACM XRDS vol.26 No.2
    – Will be discussed on Thursday Jul, 09.
  3. Head First Design Patterns:
    Chapter 2: The Observer Pattern: Keeping your Objects in the know
    We examine “Observer Pattern”.
    Goal: Build examples to demonstrate this pattern.
  4. Robotics and Automation:
    Intro to using motors with Arduino.
  5. Google Hashcode:
    We continue with this problem. This week we should complete this problem.
    Self-driving rides. In this competition problem, we’ll be looking at how a fleet of self-driving vehicles can efficiently get commuters to their destinations in a simulated city.
    Not solved during last week so we need to complete it bu Jul, 10 and proceed to the next problem.
  6. Alumni Speech:
    Will start next week (week 5).
  7. Tutorials:
    Third tutorial on Git and GitHub – Fork.
    Wednesday Jul, 01 (12:00 EEST – 11:00 CEST)
    Laravel tutorial will follow.
  8. Projects:
    a. Building “Hangman” (Android, React, and plain JavaScript app using some open API for words)
    b. Complete requirements and database design and start implementation of “Trello Clone” (Full Stack Web Application and Mobile version in the future)
    c. Building a simple Windows Forms app with C++.

PLUS
A number of students started attending the following Coursera specializations:
1. Python for Everybody (taught by the amazing Charles Severance, a.k.a Dr.Chuck)
2. Applied Data Science with Python
They are both excellent and highly recommended.

SoC2020 – Week 3

Jun, 29 – Jul, 03

Online Meetings:
1. Tuesday Jun, 30 # 12:00 – 16:00 EEST (11:00 – 15:00 CEST) General meeting
2. Wednesday Jul, 1 # 12:00 – 13:00 EEST (11:00 – 12:00 CEST) Git and GitHub tutorial
3. Wednesday Jul, 1 # 13:00 – 14:00 EEST (12:00 – 12300 CEST) Laravel tutorial
4. Thursday Jul, 02 # 16:00 – 20:00 EEST (15:00 – 19:00 CEST) General meeting
5. Friday Jul, 03 # 18:00 EEST (17:00 CEST) Hangman project

  1. Programming Weekly:
    Two problems from LeetCode to be solved:
    a. (Easy) Remove Duplicates from Sorted List
    b. (Medium) Reverse Linked List II
  2. Read a Paper Biweekly:
    Resor E. (2019) Finding the Local n Locations: Working with GPS non-use in Nairobi, ACM XRDS vol.26 No.2
    – Will be discussed on Friday Jul, 10.
  3. Head First Design Patterns:
    Chapter 2: The Observer Pattern: Keeping your Objects in the know
    We examine “Observer Pattern”.
    Goal: Build examples to demonstrate this case.
  4. Robotics and Automation:
    Intro to using motors with Arduino.
  5. Google Hashcode:
    We continue with this problem. This week we should complete this problem.
    Self-driving rides. In this competition problem, we’ll be looking at how a fleet of self-driving vehicles can efficiently get commuters to their destinations in a simulated city.
    Let’s solve this problem by Jul, 3.
  6. Alumni Speech:
    Will start soon.
  7. Tutorials:
    Third tutorial on Git and GitHub – Fork.
    Wednesday Jul, 01 (12:00 EEST – 11:00 CEST)
    Laravel tutorial will follow.
  8. Projects:
    a. Building “Hangman” (Android, React, and plain JavaScript app using some open API for words)
    b. Complete requirements and database design and start implementation of “Trello Clone” (Full Stack Web Application and Mobile version in the future)
    c. Building a simple Windows Forms app with C++.

SoC2020 – Week 2

Jun, 22 – Jun, 26

Online Meetings:
Α. Tuesday Jun, 23 – 12:00 – 16:00 EEST (11:00 – 15:00 CEST)
Β. Thursday Jun, 25 – 16:00 – 20:00 EEST (15:00 – 19:00 CEST)

  1. Programming Weekly:
    Two problems from LeetCode to be solved:
    a. (Easy) Two Sum
    b. (Medium) Permutations
  2. Read a Paper Biweekly:
    We continue with this paper:
    Ruoti S., Kaiser B., Yerukhimovich A., Clark J., and Cunningham R. (2019) Blockchain Technology: What Is It Good for? ACM Queue Vol. 17, No. 5.
    – Will be discussed on Friday Jun, 26.
  3. Head First Design Patterns:
    We continue with Chapter 1: Welcome to Design Patterns.
    We examine “Encapsulating Behaviors” and “Programming to an Interface”.
    Goal: Build examples to demonstrate this case.
  4. Robotics and Automation:
    Intro to Arduino. Make an electronic dice.
  5. Google Hashcode:
    We continue with this problem. This week we should build a prototype and find which algorithm may help.
    Self-driving rides. In this competition problem, we’ll be looking at how a fleet of self-driving vehicles can efficiently get commuters to their destinations in a simulated city.
    Let’s solve this problem by Jul, 3.
  6. Alumni Speech:
    Will start soon.
  7. Tutorials:
    Second tutorial on Git and GitHub – Branching and Merging.
    Wednesday Jun, 17 (12:00 EEST – 11:00 CEST)
    Laravel and React tutorials will follow.
  8. Projects:
    a. Building “Hangman” (Android, React, and plain JavaScript app using some open API for words)
    b. Complete requirements and database design and start implementation of “Trello Clone” (Full Stack Web Application and Mobile version in the future)
    c. Building a simple Windows Forms app with C++.

SoC2020 – Week 1

Jun, 15 – Jun, 19

Online Meetings:
Α. Tuesday Jun, 16 – 12:00 – 16:00 EEST (11:00 – 15:00 CEST)
Β. Thursday Jun, 18 – 16:00 – 20:00 EEST (15:00 – 19:00 CEST)

  1. Programming Weekly:
    Two problems from LeetCode to be solved:
    a. (Easy) Reverse Integer
    b. (Medium) Integer to Roman
  2. Read a Paper Biweekly:
    Ruoti S., Kaiser B., Yerukhimovich A., Clark J., and Cunningham R. (2019) Blockchain Technology: What Is It Good for? ACM Queue Vol. 17, No. 5.
    – Will be discussed on Friday Jun, 26.
  3. Head First Design Patterns:
    Chapter 1: Welcome to Design Patterns.
    We examine “Encapsulating Behaviors” and “Programming to an Interface”.
    Goal: Build examples to demonstrate this case.
  4. Robotics and Automation:
    Intro to Arduino. Blinking led and control blinking using a potentiometer.
  5. Google Hashcode:
    Self-driving rides. In this competition problem, we’ll be looking at how a fleet of self-driving vehicles can efficiently get commuters to their destinations in a simulated city.
    Let’s solve this problem by Jul, 3.
  6. Alumni Speech:
    Will start soon.
  7. Tutorials:
    First tutorial on Git and GitHub.
    Wednesday Jun, 17 (12:00 EEST – 11:00 CEST)
  8. Projects:
    a. Planning “Hangman” (Android and React app using some open API for words)
    b. Planning “Trello Clone” (Full Stack Web Application and Mobile version in the future)
    c. Investigating the potential for C++ project(s).

Summer of Code 2020

A number of summer programming activities for my current and past students.

It runs during the summer, from Jun 15 to Sep 30 and the main goal for the participants is to practice frequently and get into the habit of adopting and working on a pet project.

Activities:

  1. Programming Weekly: Each Monday we set 2 LeetCode problems that should be solved in any language you prefer.
  2. Read a Paper Biweekly: We select an interesting (but not very difficult) research paper to read and discuss every 2 weeks.
  3. Head First Design Patterns: We go through this excellent book in order to understand important Design Patterns and build example cases in several programming languages to demonstrate when they are necessary.
  4. Robotics and Automation: A number of simple experiments using Arduino and/or Raspberry Pi aiming to build some bigger projects during September.
  5. Google Hashcode: The plan is to solve as many previous Hashcode problems as possible in order to prepare for future participation.
  6. Alumni Speech: A number of successful alumni are invited to talk to participants and inspire them to keep going.
  7. Tutorials: Several tutorials will take place on interesting topics like Git and GitHub, Drupal 9, SCRUM, and Kali Linux. More may be added depending on the participants interests.
  8. Projects: A number of large-scale projects are implemented giving the chance to face bigger challenges and near real life activities and complexity. These projects involve many different technologies and tools including Back-End, Front-End, and Mobile development.

All activities are online using Google Hangouts, Discord, and Slack. Regular updates will be posted in order to record progress and achievements.