Showing posts with label Open Courseware. Show all posts
Showing posts with label Open Courseware. Show all posts

Wednesday, August 21, 2019

Functional Program Design in Scala


The second class in the Scala specialization down. I was a little put off by the fact that this is basically a retooled/abridged version of the "Functional Reactive Programming" class, which made it feel incomplete. Regardless, the programming exercises were fun, if a bit lightweight. The lecture material was ... meh.

My solutions on Github: FunctionalProgramDesignScala


Sunday, April 7, 2019

Functional Programming Principals in Scala

After a long break (Advanced Algos took a lot out of me), I decided it was time to take another class. When the topic of taking the Scala series of classes from Coursera came up in my programming group, I jumped at the chance. I needed a break from theory, and a chance to do some coding in a new language was just the ticket. This post covers the first course in the series, "Functional Programming Principles in Scala". tl;dr: Take this course, it's great!


Monday, December 10, 2018

Harvard COMPSCI 224 - Advanced Algorithms

For a long time I've been eyeing Jelani Nelson's Advanced Algorithms class. It's taken me a while to convince myself I was prepared to understand the material, and it's taken me even longer to convince myself I had the time to get back into self studying computer science courses. Per my usual MO, I'm supplementing the lectures from Nelson's class with some lectures from MIT on the subject, though those have more of a bootleg feel to them.  Hoping it will be quality content nonetheless.

The goals of the course are to look at different ways to analyze algorithms, and use different "models" to think about algorithms.

Harvard COMPSCI 224:
MIT Advanced Algorithms (6.854): 

Tuesday, April 25, 2017

MIT 6.005 - Software Construction (edX)

The resources for MIT's "Software Construction" class are distributed between several disparate sources.  There is an entry for 6.005 on the MIT Open Courseware page, where it is called "Elements of Software Construction", and there are two classes on edX: 6.005.1x "Software Construction in Java" and 6.005.2x "Advanced Software Construction in Java".

I'm hoping that working through this class will sharpen my understanding of general software engineering concepts.  The emphasis of the class is writing bug free code that is easy to understand and easy to change, which is certainly something you can never be too good at, am I right?

Sunday, April 16, 2017

MIT 6.046 - Design and Analysis of Algorithms

6.046 is described by Eric Demaine as the final undergraduate algorithms class, with more advanced and more specialized algorithms classes being at the graduate level.  I've had my eye on the advanced data structures and advanced algorithms classes for a while, and this class is a fundamental prerequisite for those.  Now, being that it's my MO to totally overdo it, naturally I had to find overlapping classes from some of my other favorite providers and watch everything.  Had I limited this to one overlapping class it probably wouldn't have been that bad... but I found three other classes: Berkeley CS170, Georgia Tech CS6505, and Stanford CS261.  All four classes are what I would call "intermediate" level algorithms courses, with significant overlap in concepts covered:


I probably would have been done a month ago if I hadn't gone so crazy with watching everyone's lectures...

Saturday, March 18, 2017

Legacy Berkeley course material pulled over accessibility


One of the earliest sources of free education materials I stumbled upon was webcast.berkeley (right up there with MIT OCW).  Seeing these institutions of higher learning release their lectures and course content free, to the masses, made me envision a time when the entire education system could be transformed.  Today, with Coursera, Udacity, and edX, we are well on the way to that revolution.  But despite these (arguably more sophisticated) offering, I always found myself returning to that well.  No more...

Friday, February 3, 2017

Advanced CSS Concepts (edX)

Last summer I enrolled in a class on edX called "Advanced CSS Concepts".  It was delayed until November because of technical issues on their end, and I put it off until a week ago because Google.

"Oh, advanced ey?  That should be interesting" I thought.  Boy was I in for a disappointment.

Friday, November 25, 2016

MIT 6.008.1x - Computational Probability and Inference (edX)

After slogging through the AI class, I thought it would be a good idea to level up my probability skills a little bit.  So I poked around on edX and stumbled on to the Computational Probability and Inference class by MIT.  One thing led to another and I, apparently, accidentally signed up.  Whoops.  But it's all good, I'm going to roll with this one and see where it takes me.

Friday, November 4, 2016

Berkeley CS169 - Software Engineering (Homeworks)

Once again into the breach


In the Summer of 2015 I burned though the UC Berkeley "Software Engineering" lectures, and had every intention of doing all the reading and related course work so I could "claim" it on my pseudo-transcript.  Well, here it is over a year later and I'm finally getting around to finishing it properly.  I like to think I've refined my personal process for documenting my MOOC journey (lol christ I sound like a B-school brochure)... so since I already took notes on all the coursework (see my previous post), I'll just cover the homework assignments here.

Friday, October 21, 2016

Intro to Natural Language Processing (Coursera)

While I had held out hope that Stanford or even Columbia would offer their NLP courses on Coursera again (I didn't find anything related to the subject on edX), it was not to be.  So I signed up for the University of Michigan's introductory offering.  The Stanford lectures (Jurafsky and Manning) and the Columbia lectures (Collins) are available on YouTube, and these assignments from Cairo University are based on this material as well, so there are plenty of additional resources available in the space.  For now I'm going to mostly concentrate on the Michigan material, just to save a bit of my sanity lol. An online version of the draft 3rd ed of Jurafsky and Martins book, Speech and Language Processing, is also available.

Thursday, October 6, 2016

Agile Development - Bertrand Meyer (edX)

Agile - The Good, The Hype, and the Ugly


This six week edX course covers the concepts, principles, practices, myths and misconceptions of Agile project development.  Lectures are done by Bertrand Meyer, and while not required, the recommended text is Meyer's book Agile - The Good, The Hype, and the Ugly.  According to Meyer, the intent of the class is to look at the Agile approach to software development in an objective way, identifying shortcomings and myths of Agile, as well as its strengths and merits.  The graded portion of the class consists of multiple choice quizzes, so all in all it's a very lightweight course.

Thursday, August 11, 2016

Berkeley CS188 - Artificial Intelligence (edX)

Having passed the 70-486 exam, I decided I wanted to try something different before I tackled the last cert test, so I poked around MIT OpenCourseware, Coursera, and edX looking for something interesting.  I decided that it was about time to try the AI class.  MIT and edX both had similar offerings, and I went with edX since it offered the autograded exercises (and I already owned the recommended book).

Artificial Intelligence on edX (Lectures) (AI Homepage)
Artificial Intelligence: A Modern Approach

Supplemental:
Artificial Intelligence on MIT Open Courseware (Course website)
Artificial Intelligence from NPTEL
Machine Learning from University of British Columbia

Friday, December 18, 2015

MIT 6.006 Intro to Algorithms

Resources:

Sunday, December 6, 2015

Berkeley CS61B - Data structures (Projects)

Back in May I worked through the Data Structures class through UC Berkeley.  I got the homeworks finished, but I put off working on the projects right away.  In August I got projects 0 and 1 finished.
In late October I finally got around to finishing Project 2.  Finally, in early December I finished Project 3 (I got sidetracked working through MIT's Intro to Algorithms class... and doing like, a billion HackerRank challenges lol)

Sunday, October 4, 2015

Coursera Machine Learning by Stanford

Just finished up my first full blown course from Coursera, a course from Stanford University on Machine Learning.  I'd watched through the lecture series for the Stanford Natural Language Processing class, but I didn't do the programming exercises (yet...) so I don't really count that one. Finished up way ahead of schedule, though to be fair, they set a pretty leisurely pace.




Monday, June 8, 2015

Berkeley CS169 - Software Engineering (Lecture Notes)

Recently finished up all the lectures for the Berkeley Webcast of CS 169 - Software Engineering.  This course focuses on building Software as a Service (SaaS) applications in Ruby on Rails.  Although I don't anticipate the need to know a lot of RoR for work, the concepts discussed in the course were extremely valuable and I would definitely recommend them to anyone looking to learn about professional software development.  Some key topics of interest:
  • Agile project development
  • Testing and refactoring
  • Design patterns
  • CI and deployment
These are my notes on the lectures, which are really more like a detailed table of contents so that I could easily reference the lectures if I wanted to revisit a topic.  I figure the course website has all the slides and reference to the book, so recreating that content seemed a bit silly...

Friday, May 22, 2015

Berkeley CS61B - Data structures

I hadn't ventured into the open courseware realm for a while, and I've wanted to get a bit of formal education on data structures and algorithms for a while, so I finally took the plunge a couple weeks ago and started 61B.  For quick reference, here are the relevant locations:

Course Website
Course Lectures
Big O Cheatsheet
Wikipeadia articles on data structures.

Wednesday, May 20, 2015

Udacity Course: Developing Scalable Apps in Java

My new position focuses on cloud development, with an emphasis on Google App Engine.  I wanted to get up and running quickly, so I worked through this course from Udacity.  Prior to this course, I'd only worked on one other App Engine project, which was basically an expansion on the Google Backend API Walkthrough.  I'd previously used the Google Plugin for Eclipse, however this project uses the App Engine maven plugin, so that was different.  Overall I thought it was a good course.  Naturally, nothing involving Eclipse can go smoothly the first time, but after a couple hiccups, I was off and running.