Since December, I’ve been persuing a “remedial computer science education”, for the sake of both well-roundedness and employability. My background is in the purest of pure math (Ph. Dropout from a well-ranked program), so I feel I can move fairly quickly here, though the territory is new.
My biggest milestone to date has been solving the first 100 Project Euler problems in Python (no omissions!). I had had a bit of Python experience before, and I picked 100 as the smallest number that sounded impressive (to me).
Second biggest milestone: following a course outline, I wrote an interpreter for a very limited subset of Scheme/Racket. This really helped de-mystify programming languages for me. (Although rather than learn OCaML like the course wanted, I just hacked it together in Python so that I could move on to a new project sooner.)
In the same vein, I’m currently reading and working through SICP, still using Racket. I’m in Chapter 3 of 5, though I’m often peeking ahead to Chapter 4 because it looks pretty exciting.
Of course, I won’t be a true LISP wizard without understanding macros, so the next (or concurrent) project is to go through the relevant Racket Docs tutorial.
I have some other likely future projects in mind, though I’m actually trying not to plan too far ahead lest it all appear more daunting.
Forcing myself through some C, to build character. This was explicitly recommended by a software engineer friend as a more “useful” way to spend my time than learning to LISP.
Since December, I’ve been persuing a “remedial computer science education”, for the sake of both well-roundedness and employability. My background is in the purest of pure math (Ph. Dropout from a well-ranked program), so I feel I can move fairly quickly here, though the territory is new.
My biggest milestone to date has been solving the first 100 Project Euler problems in Python (no omissions!). I had had a bit of Python experience before, and I picked 100 as the smallest number that sounded impressive (to me).
Second biggest milestone: following a course outline, I wrote an interpreter for a very limited subset of Scheme/Racket. This really helped de-mystify programming languages for me. (Although rather than learn OCaML like the course wanted, I just hacked it together in Python so that I could move on to a new project sooner.)
In the same vein, I’m currently reading and working through SICP, still using Racket. I’m in Chapter 3 of 5, though I’m often peeking ahead to Chapter 4 because it looks pretty exciting.
Of course, I won’t be a true LISP wizard without understanding macros, so the next (or concurrent) project is to go through the relevant Racket Docs tutorial.
I have some other likely future projects in mind, though I’m actually trying not to plan too far ahead lest it all appear more daunting.
Forcing myself through some C, to build character. This was explicitly recommended by a software engineer friend as a more “useful” way to spend my time than learning to LISP.
An algorithms course, possibly using this book