I have been studying for a computer science degree with the Open University since 2007 here is a brief overview;
Then with the building blocks of software I learnt about specifications, code constructs, tracing code, binary trees, logic, Boolean algebra, rules of inference, proof by induction, databases, recurrence systems, efficiency, axiomatic specification, classes.
I then went on to learn object orientated programming with Java. Java was covered in a number of courses, one course started of with OOP and gave me a solid grounding in everything class orientated and then another course put that knowledge to work with more detailed work on the communication between methods within an object and then on to understand the relationship between many objects. I learnt about input, output, exceptions, packages, abstraction, graphical user interfaces, event-driven programming, Threads, internet programming.
In another course that used Java covered software development, UML, use cases, Structural and Dynamic models,
A small course covered working as a distributed team on a web project. This taught me a lot about planning and communication with others.
I then went on to study Natural and Artificial Intelligence, which has been by far my favourite course. It is very interesting and has so much content your could spend a life time on each topic of study. It has made me want to investigate AI for games and simulated worlds, which I will discuss at length in future blogs.
After AI I studied concurrent and distributed systems, which roughly translates to multithreaded processing and communicating across a net work, and the internet. Multi-tiered systems and various client/server models. It used Java enterprise edition, serverlets, beans, thin and thick clients, distributed and multiple databases.
After all this I chose to go back to the level 1 courses and learn some Maths that I probably should have learnt a bit before starting on the higher level courses.
Once I had refreshed myself of the Maths I went on to study Software engineering with Objects, which focused on a an engineering approach to developing software. Simply put 'Software must be delivered on time, to budget and to specification'.
I now have an Bsc open degree.