Learning from 0 – Part 1

I’ve been meaning for a long time to start learning about some of the fundamentals of Computer Science and have recently got very interested in Computing history. Whether it is the story of J. Presper Eckert and John Mauchly and their work on ENIAC or Alan Turing and his life, I am really interested in where all of this amazing technology that we mostly take for granted started. I want to learn about the people and the technology.

To start with I wanted to learn about digital circuits and how they work. I started with a simple idea, creating a binary calculator using logic gates.

First step was to create an adder. To do this, I needed to make a half-adder circuit. I decided it create it in Python as this is the language I use most often but I plan to re-create it in Javascript to go on the main projects page of www.paulwill.co.uk

The Half Adder

The logic for a half adder goes like this:

Try it here.

This logic led to me writing the same thing in Python. Python has bitwise Exclusive OR capabilities but I am implementing my half-adder in boolean logic, using only True or False. Here is the code:

def halfadder(a,b):

    if a != b:
        s = True
        c = False
        return s, c
    elif a == True and b == True:
        s = False
        c = True
        return s, c
    else:
        s = False
        c = False
        return s, c

The truth table for this was:

ABSumCarry
0000
1010
0110
1101

This works, and the inputs for the truth table looks like this in Python:

print(halfadder(False, False))
print(halfadder(True, False))
print(halfadder(False, True))
print(halfadder(True, True))

The outputs produced are correct:

(False, False)
(True, False)
(True, False)
(False, True)

So far so good, next post a Full Adder.

What to learn to be a Full Stack Web Developer

Grey pencils on Yellow Background.

Below is a list of web development technologies, I would like to get familiar with to help develop (or re-develop) my skills in web development. I’ll update this list as I go, this may take some time…

HTML – Learnt this when I was 13 and have been having fun on and off with it ever since.
CSS – Started to take off more as I left web development, but is massively used for styling as well and layout on all web pages now.
Javascript – Using the Document Object Model to mess with the browser. I started working on simple scripts but nothing too advanced. The first real programming language I used was PHP.
VS Code – as an IDE, I also like Notepad++
Chrome – as a browser and a debugging tool.
React Development Tools in Chrome too.
Photoshop for layouts and graphics.
GitHub for version control.
Invision wireframe tool for design.
HTML5 source maps to speed up pages.

CSS animation – To sexy up pages.
Node.js/Yarn – need to learn
NPM – need to learn
Module bundling – webpack – need to learn
SASS-CSS need to learn
ECMA Script 6 – need to learn
Bbel transpile – need to learn
Bbel flow – need to learn
Typescript – need to learn
React and JSX – need to learn
Angular – need to learn
ESlint – need to learn
Jest testing — need to learn
Mocha testing – need to learn
Nginx – need to learn
Apache2 – need to learn
Postgresql db – need to learn
React – need to learn
Microservices – need to learn about
Azure or AWS or Heroku – need to learn
Web Assembly – Need to learn
Webgl – Need to learn
PHP or Python – These I know…


Photo by Joanna Kosinska on Unsplash