Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Does this include exercises? I didn't see any and I always find that the most useful part of learning.


Unfortunately, it does not. These lectures are "mine", in the sense that I developed all of them myself, but the homeworks and lab exercises are the combined efforts of generations of TAs and instructors from the past. It wouldn't be right for me to give them away. (they are also reused from time to time, so there are academic integrity concerns with that also)


(but I have thought of developing my own exercises independently to go with the lectures, to post on my website. This is generally a lot of work, though, so this might take some time, depending on how much people would benefit from it.)


Could be a classic kickstarter campaign style thing.


Haha, maybe. I'm not looking to earn any money from this, though. Time is the bigger constraint in my life at the moment.


TIL. Given that 15-213 has been widely available for years I naively assumed this would also hold true for other undergrad CS courses, but apparently not.


[flagged]


“Here is the fruit of my labour and love, which I give to you at no cost.”

“How dare you do it this way!”


Being a cranky shithead and scrolling through HN. Name a more iconic duo. Seriously though, if your first reaction to a neat source of information is to shit on it with snark and thinly veiled assholerry, please leave the internet for a week. There are better ways to give constructive feedback


Its not “How dare you do it this way!”. Its "Why do you fail in the end with the simplest and most obvious tasks?"


In some ways I can only agree, having criticised others for apparently doing the same thing. I guess the difference is that it was completely bloody unnecessary to waste enormous amounts of bandwidth for the cost of just a little bit of basic checking. For me individually, bandwidth is virtually free, for others it is metered (not everywhere has Western-levels of Internetz). But bandwidth is not free – multiply up 49.2 MB by a number of expected page visits.

So, as a matter of principle we need to stop acting as if resources are free. Also if the author couldn't even get that simple HTML detail right then it potentially says something about the quality of his site's information. Perhaps.


> Also if the author couldn't even get that simple HTML detail right then it potentially says something about the quality of his site's information. Perhaps.

Perhaps is doing some heavy lifting here. I take it from the fact that the lectures are on Functional Programming that OP might not be a front-end developer and might not have the level of care needed for front end to compress the images in a way that renders nicely. So,

Perhaps you ought not judge someone releasing their free teaching materials for a backend class on their front end development, when the site is a centered <div> with purely static elements.

Perhaps you ought to slow down and do some critical thinking before being critical of others.


I'm a back-end dev (inc. FP) and RDBMS guy and even I'd know not to do this; instead to pre-shrink images presented as decorative thumbnails. But let's be constructive, what form should my critical thinking have taken, how should I have done better (edit: or criticised more carefully)? Serious question. Thanks.



I think I get the idea, thanks. I am a bit ratty these days so it comes out a bit harsh.


As a matter of principle, those in bandwidth-constrained situations should be browsing via proxies or browsers that automatically compress, such as Opera Mobile back in the day, or Google’s more modern compression baked in to Android/Chrome. (If it still exists, it’s been awhile…) That said… yeah, it couldn’t hurt to put a free CloudFlare CDN in front with automatic image optimization, for example.


> "it was completely bloody unnecessary to waste enormous amounts of bandwidth"

Thats not enough. It was completely bloody unnecessary to waste enormous amounts of co2.

And critical thinking should lead to the realization that not many people have to solve the - albeit small - mistake of an individual via Cloudflare or similar, but rather someone should do it correctly right away. And if he has no knowledge of frontend, he should not do things he has no knowledge of.


If you get to around lecture 9, a classic example I always tell people to start with is a calculator!

For instance, here's the SML code for it:

``` datatype exp =

    Num of int

  | Plus of exp * exp

  | Minus of exp * exp

  | Times of exp * exp

  | Div of exp * exp

```

Implement the function `eval : exp -> int`, which evaluates the expression as best as it can. Assume no division by zero.

Extra credit: Can you implement `eval' : exp -> int option`, that returns `SOME n` if the expression evaluates, and `NONE` if it divides by zero?


Not exactly exercises, but there's https://smlhelp.github.io/book/docs/ which supports the course and explains each of the concepts as well as library documentation at the official class site, http://www.cs.cmu.edu/~15150/resources.html

It looks like their current workflow keeps exams and homeworks off the internet effectively, but there's a 6-year-old codebase at https://github.com/zhengguan/15150-1 with 10-year-old homeworks and such.


Rewriting standard list functions (map, fold, sum, etc.) is a good entry-level exercise.

A λ-calculus interpreter can be used as an intermediate level exercise. It is in particularly valuable in the context of solidifying one's understanding of functional programming.

You can also use "standard" textbooks, such as the SICP [0], and perform the exercises using the language of your choice, instead of Scheme/LISP.

[0]: https://mitp-content-server.mit.edu/books/content/sectbyfn/b...


making up your exercises is part of that fun journey of creating your own toolbox of functional programming in your language of choice!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: