At work:
At home:
Hmmmm... excellent question.
When you follow the installation instructions, it gives you a default theme that looks a lot like this structure, where the theming files are in the templates
directory and assets in the directories named css
and images
. With that set of default files, you could edit the css files and link to it in the layout .html page using the <link> tag.
Now, if you'd like more customization than that the answer would be "it depends on what you want to do".... could you be more specific about elements you'd like to have in your theme? ;-) For example, are you looking to theme navigational elements, restructure the pages, or different url structure, or custom post metadata?
My vote is on Hakyll.
There is really no concept of themes in Hakyll because you have direct control over the html,css,js. You could try a template from http://bootstrapzero.com/ and work from there. I think this would be a beneficial approach to someone that is new at html,css. You could also try using something like Clay to generate you CSS from Haskell (http://jaspervdj.be/hakyll/tutorials/using-clay-with-hakyll.html).
You will have to write at least some html to get your base templates setup. You could experiment with using Blaze templates in Hakyll. I'm not sure how this would work, though.
There are tons of example sites and source on the Hakyll site: http://jaspervdj.be/hakyll/examples.html.
I've found it very simple to integrate features like Disqus (it is just an html snippet) and social media icons. Check out Hakyll partials if you want fine grained control over their placement.
Hakyll deals pretty well with code snippets for my usage. It uses Pandoc to generate pages from Markdown, LaTeX, and rst which generally picks up syntax and has support for highlighting.
I really enjoy using Hakyll and I've deployed several sites using it. Good luck.
I'm gonna have to defer to someone else on free server space because I just don't know much about AWS/GitHub Pages/whatever else -- but are you looking for free hosting to test on? You can spin up a droplet on DigitalOcean for that purpose and then spin it down and only be charged for the time you used (pennies on the hour). Or can just set up a server (possibly with Vagrant if you plan on using Linux but don't have a Linux box) on one of your computers and expose it to your LAN and test from there.
Jekyll (or if you're comfortable with Haskell, Hakyll) are good static site solutions. Susy is a good responsive grid SCSS library -- a slightly higher learning curve than Bootstrap, but IMO far better.
Most of this I mention because you're a CS student, but if that's all overwhelming, I'd suggest just firing up a simple Python server, downloading SASS/SCSS and grabbing Normalize.css, and hacking out a static site locally with just those tools. That's all you really need; for a project this size, learning a whole bunch of other tools might actually drag you down. Then when you're ready just get a VPS and create a git repo on it (or just a shared hosting account), and you're set.
You could use Hakyll as a blogging engine. Org support appears to be coming soon. It's not perfect, in that it doesn't use metadata parsed from within Pandoc, but it's really awesome nonetheless.