Live data from Hacker News

How to Design Programs (2014)

htdp.org

101–110 of 141 posts

Re: How to Design Programs (2014)

#101

Earlier quoted context omitted.

I've had that moment and it's a paradigm shift in thinking. I'm still on my first leg of my journey as I started learning Racket/Scheme relatively recently but I've already started seeing things in a different light. I almost don't care about performance (at this point) as I know that could be attainable somehow once a solution is fleshed out but I simply enjoy the understanding of the concepts and the patterns that…

> I almost don't care about performance (at this point) as I know that could be attainable somehow once a solution is fleshed out It rarely is though.

I've not read HTDP, only very little of it. However, I find it hard to imagine, that they would not introduce data abstraction layers, like they do in SICP. So, if you relate to the usage of single linked (nested) lists, I quite sure, that improvement by switching out the data structure and putting in an appropriate one can be had. Furthermore, they'll probably teach mutation as a last resort, not as a standard thing to do, which allows for easier parallelization, provided you choose an appropriate data structure.

Once a fundamental understanding of the problem solution is achieved, one can think about refactoring steps like this. Depending on how well one wrote the code, these refactoring steps become easier or more difficult.

Re: How to Design Programs (2014)

#102

Earlier quoted context omitted.

I see two sides: the numericals and the algebraists. I've talked with people who also see these two sides but call them differently. As I see it, this book is closer to the algebraists side. Thus, you probably lean closer to the nuemerical side. I also like to think about it as the Turing perspective (numerical, algorithmic) and the Chruch outlook, which is more algebraic-symbolic. At the end of the day, it's both "c…

The part about the two mindsets sounds vaguely familiar. Is there an article or blog post that lays this out in more detail?

A good paper describing functional programming and also talks about the differences between these two mindsets is "Conception, Evolution, and Application of Functional Programming Languages" by Paul Hudak (1989). You can find a copy at https://courses.cs.washington.edu/courses/cse583/00wi/p359-h....

Re: How to Design Programs (2014)

#103

Earlier quoted context omitted.

> I almost don't care about performance (at this point) as I know that could be attainable somehow once a solution is fleshed out It rarely is though.

I've not read HTDP, only very little of it. However, I find it hard to imagine, that they would not introduce data abstraction layers, like they do in SICP. So, if you relate to the usage of single linked (nested) lists, I quite sure, that improvement by switching out the data structure and putting in an appropriate one can be had. Furthermore, they'll probably teach mutation as a last resort, not as a standard thing…

It's a cs101 book, they keep it simple and focus on functional programming without mutation. I was a bored business major that took the class at neu and it was a pretty amazing intro to cs that i credit for making me love cs. They got into the more advanced stuff in future courses. I love oop now, but think functional programming was a great way to introduce programming.

Re: How to Design Programs (2014)

#104
Kathi Fisler gave a great talk at the latest racketcon about research done based on the HtDP curriculum. I thought it was interesting to see the sorts of problems that fit well with the basic structure templates given in htdp and the kinds of problems that were a bad fit.

https://www.youtube.com/watch?v=MnrRUdbOW1M

Re: How to Design Programs (2014)

#105
post #42

I am self taught, I worked as a lawyer for six years and four of those were spent prepping for a career change - self-teaching comp sci and software dev in the evenings, then working as a volunteer a few years in. (I come from an engineering family and should have just done it from the start, but oh well.) I'm not sure if it's still on the platform, but about a year into my self studying I took a series of courses on…

Once a SE discovers that they can learn, quite significantly, in a language that may have very little practical day to day use, it's a powerful moment. Sometimes the best tools for teaching aren't the tools we need in our day to day work, and that's ok. When you're in learning mode, it's about discovering those foundational blocks upon which all else is built. Those fundamental blocks are never the actual programming…

I'm sort of experiencing this myself. Currently learning C even though it's not practical in my day to day. My main language is Python and sometimes Scala. Learning about memory management, pointers, etc., has been eye opening to me (I studied math but not CS in college) and I've taken the opportunity to start digging into the CPython code base to see how Python handles things under the hood.

Re: How to Design Programs (2014)

#106

I am self taught, I worked as a lawyer for six years and four of those were spent prepping for a career change - self-teaching comp sci and software dev in the evenings, then working as a volunteer a few years in. (I come from an engineering family and should have just done it from the start, but oh well.) I'm not sure if it's still on the platform, but about a year into my self studying I took a series of courses on…

So what you're saying is: “Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.”

Yea, I took the course at neu and it was an amazing introduction to programming. I love oop now, but I'm pretty sure my code still has hints of this course in it. The simplicity and elegance of functional programming was awe inspiring when I took the course.

Re: How to Design Programs (2014)

#107

I am self taught, I worked as a lawyer for six years and four of those were spent prepping for a career change - self-teaching comp sci and software dev in the evenings, then working as a volunteer a few years in. (I come from an engineering family and should have just done it from the start, but oh well.) I'm not sure if it's still on the platform, but about a year into my self studying I took a series of courses on…

Hello, this might be a bit personal but I am a fellow lawyer having practiced law for 3 years. How did you take the plunge after six years of doing law? Were there any external circumstances? How did you get over worrying about finding a job, losing status etc.? I dream of getting into legal tech and combine my passion for computers with my hard earned law knowledge at some point. But it's just a dream at this stage…

If you can get a law degree, you can definitely learn comp sci. Lots of people with no experience think it's magic, but it really isn't that hard to learn. This book and the teachings that use it were a great way to get started when I took the course. It built a solid foundation for everything else to come when I took the course at neu.

Re: How to Design Programs (2014)

#109
post #6

Earlier quoted context omitted.

MIX/MMIX are close to how CPUs work physically. scheme is close to how computation works theoretically. The pedagogical approach that appeals to individuals tends to align with how they are most comfortable thinking about it.

Let me say something that may reveal my ignorance, but which I'm very happy to be corrected on: for the purpose of writing moderately-sized, everyday programs, I've never needed to understand how computation works theoretically (more abstractly than introductory algorithms and data structures). And that's not because I'm not comfortable with abstraction, or because I don't know how it works theoretically, I just have…

> Perhaps a better criticism is the mostly useless emphasis on immutable data structures. The example I like to bring up is how Haskell for a long time didn't have a readily-available hash table implementation for completely ideological reasons.

Can you link to some evidence that the reasons were completely ideological?

Re: How to Design Programs (2014)

#110
post #35
post #31

Back in 2008/2009, I was lucky enough to be in the NU PhD program straight out of undergrad. I had the amazing opportunity, as a TA, to teach this curriculum in the second-semester CS course that all of the CS/SE students went through. This curriculum, along with NUs co-op model, creates some of the most spectacular engineers I've ever had the pleasure to work with. HTDP gives them the tools, and the the co-op gives…

Speaking as a combined BS/MS grad who TA'd the first semester intro course for 6 semesters and had the pleasure of having one of the authors advise me on a senior project type thing, a big +1 to this. I sometimes feel like I'm crazy when I tell people I wouldn't pick nearly anywhere else for undergrad CS, but time after time when I compare with peers on their experience, this model really is incredibly different and…

I went through the coop program at northeastern and it was amazingly pragmatic. You go to school for a career and they put a large focus on that part. They had classes like building resumes and their internship pipeline was amazing. They have tons of connections with companies and they help you with getting your foot in the door somewhere. After my first coop stint I kept working there part time through classes and I never stopped working through the end of school. I had a career and experience before I even graduated.

Also, the comp sci classes were amazing like you said. I started out as a bored business major and took the intro class that used htdp and it immediately changed the course of my life.

Post reply on HN