Project Idea List

I get this question a lot too. So I started writing down a list of projects. Then I found this one. It is better than what I can come up with. Go ahead and visit the page and pick the projects and work on them.

Below you will find 125 project ideas I have come up with while brainstorming. I have divided them into 10 different topic areas that I think the project may use the most. Keep in mind that a few of these projects could have been classified in more than one topic.

A Course on Composing Programming with Python

Here is another great resource to Learn Python.

From the site, here is their reason for working with Python language.

Python is a widely used programming language that has recruited enthusiasts from many professions: web programmers, game engineers, scientists, academics, and even designers of new programming languages. When you learn Python, you join a million-person-strong community of developers. Developer communities are tremendously important institutions: members help each other solve problems, share their projects and experiences, and collectively develop software and tools. Dedicated members often achieve celebrity and widespread esteem for their contributions.

The Python language itself is the product of a large volunteer community that prides itself on thediversity of its contributors. The language was conceived and first implemented by Guido van Rossum in the late 1980’s. The first chapter of his Python 3 Tutorial explains why Python is so popular, among the many languages available today.

If you want to try it here, it is. A free online introduction to programming and computer science. Composing Programs

An Appreciation of Python in a Day

If you are an engineering student in the second or third year, you can learn the basics of Python in a day. In my workshops, I use a simple format:

  1. One hour of teaching Python through examples
  2. A couple of hours of hands-on practice, trying out a few examples
  3. An hour of discussion with interactive coding
  4. A few more hours of lab
The goal is pretty simple. Show that you can start building simple working programs in less than a day.

I found a YouTube video that provides a quick Overview of Python in less than 45 minutes. If you want to learn Python on your own, try a video like this (there are many on YouTube) and work along.



Python – Both Dynamically Typed and Strongly Typed

A nice explanation of how Python differs from other programming languages from one of my favorite books – Dive into Python

statically typed language
A language in which types are fixed at compile time. Most statically typed languages enforce this by requiring you to declare all variables with their datatypes before using them. Java and C are statically typed languages.
dynamically typed language
A language in which types are discovered at execution time; the opposite of statically typed. VBScript and Python are dynamically typed, because they figure out what type a variable is when you first assign it a value.
strongly typed language
A language in which types are always enforced. Java and Python are strongly typed. If you have an integer, you can’t treat it like a string without explicitly converting it.

weakly typed language
A language in which types may be ignored; the opposite of strongly typed. VBScript is weakly typed. In VBScript, you can concatenate the string ’12’ and the integer 3 to get the string ‘123’, then treat that as
the integer 123, all without any explicit conversion. So Python is both dynamically typed (because it doesn’t use explicit datatype declarations) and strongly typed (because once a variable has a datatype, it actually matters).

A Couple of Why and What Questions on Programming

I was talking to a group of students yesterday. All of them took a programming test and some of them did well.

My chat with them (individually) was to find out their conceptual understanding.  I asked a few of these questions (and some variations):

  1. Why do we need functions in C?
  2. Given a choice between using C, Java and Python, why would you use one or the other?
  3. What are some of the differences between C and Java?

For software practitioners, these questions are really easy. But for students, they are not. To answer them, they need to have a better understanding or programming and some practice in solving a few non-trivial problems.

On the positive side, most of these students were willing to think and give these questions a try. So I started a Whatsapp group for them on Thinking Programming. I plan to post a couple of questions each day to kindle their thinking.

Some Starting Points to Learn Python

Depending on your experience in programming you can start with one of these resources.

If you are a beginner to programming pick one of the two.

  1. Learn Python the Hard Way, or
  2. Think Python

If you have some experience in programming in other languages like C, C++, Java and consider yourself an intermediate level programmer, the best resource is

Dive into Python

In both cases, you can learn better if you practice writing a lot of programs. Sites for Programming Challenges will provide some resources.


Sites for Improving Your Coding Skills

Extract Information from Tweets

A simple application to extract information from tweets.

You are given a library to collect Tweets  called Tweet Collector (thanks to Faizal)

Here are some simple tasks:

  1. Create your own Twitter account
  2. Create a Github or Gitlab account
  3. Get your Twitter credentials
  4. Pick a Twitter account to test
  5. Develop a small Python app, that takes a Twitter account and does the following:
    1. Gathers 100 tweets
    2. Extracts links from the tweets and prints them (removing duplicate links if any)
    3. Extracts references to other Twitter accounts and prints them (removing duplicates)
    4. Extracts all the hashtags in tweets (removing duplicates)

Once you have the basic command line app running, try the following:

  1. Create a desktop app with simple GUI
  2. Write a project log on what you did, the problems you faced and what you learned in the process.
  3. Store your app in Gitlab/Github and demo the app in our next workshop