[HN Gopher] CS101: Introduction to Computing Principles
___________________________________________________________________
CS101: Introduction to Computing Principles
Author : tosh
Score : 300 points
Date : 2022-07-10 10:29 UTC (12 hours ago)
(HTM) web link (web.stanford.edu)
(TXT) w3m dump (web.stanford.edu)
| [deleted]
| triska wrote:
| The impression I get from this schedule is that this is a
| collection of quite _ad hoc_ topics that are in some cases quite
| far removed from what I expected to see covered in a course that
| is intended to introduce computing _principles_.
|
| For instance, are "For Loops", "If Statements" and "Spreadsheets"
| really essential to computing, can these concepts be considered
| "computing principles"?
|
| What about logic? I note there is a reference to "Boolean Logic"
| as one part of the "Spreadsheets and Data" lecture. What about
| models of computing, or defining what we even _mean_ when we say
| "computing"? The lecture notes hint at some of these topics in
| the final lecture ("Theory and Conclusions"), almost like an
| afterthought.
| rjsw wrote:
| I remember finding out that a Biology major taking an
| "Introduction to Computing" course had still not touched the
| keyboard after six weeks. If a course like this helps people
| without a programming background get started then that seems
| good to me.
| zasdffaa wrote:
| I agree it's weird, but as someone with a decent CS
| background...
|
| > What about models of computing, or defining what we even mean
| when we say "computing"?
|
| ... I found all I've learn is worth nearly nothing in industry.
| Which saddens me and it shouldn't be, but it is so. Really
| basic principles get useful but only in very high-end areas,
| stuff that I can barely comprehend (eg. automata for model
| checkers etc).
| feet wrote:
| Which part of the industry do you work in?
| zasdffaa wrote:
| IT contractor. Much of it DB stuff. The range of work you
| do goes from 'sit here and scrub data' to being given a
| free-ish rein when you've proven yourself, and then you can
| be very creative.
|
| It's all business-oriented work, as in, we need this ASAP.
| I'd like to do more research-oriented work, or at least
| cutting edge. Something that's solving longer term business
| problems, not just 'get it done yesterday'.
| ascar wrote:
| > I found all I've learn is worth nearly nothing in industry
|
| It really depends what you work on. Doesn't even have to be
| high end. When working on performance critical code I was
| glad about my computer science and math education more than
| once. And performance can get interesting even at a few
| million users or regardless of user-count in realtime
| applications. When writing business logic without performance
| and scalability in mind, yea, all that knowledge remains
| dormant. Reality is that there is simply far more business
| logic work out there than performance critical code.
| zasdffaa wrote:
| All my understanding of perf-critical code has come from
| understanding of the usual - pathological cases for
| algorithms, memory layout, cache friendliness etc. etc.
| None of that except perhaps a very little of the first,
| came from my formal education, it's all been down to me
| reading up on stuff.
|
| Can you give me an idea of what your CS & maths education
| gave you that you found so useful for tuning code? Maybe
| I'm missing something important.
| ascar wrote:
| > algorithms, memory layout, cache friendliness
|
| all of this was an integral part of my formal education.
| Algorithms and datastructures and complexity analysis was
| mandatory in the undergraduate studies, the lower-level
| stuff mostly in elective postgraduate classes of my
| computer science program. From the top of my head also
| things like operating systems, compilers, networking,
| vectorization (SIMD), instruction pipelining, branch
| prediction, threading, NUMA, thread-pinning/affinity that
| help understanding how my code is actually executed. On
| the math side set theory, probability theory and analysis
| also came in handy more than once. Linear algebra I guess
| if I had to deal with matrices, which is probably
| relevant in the AI/machine learning fields (not my area
| of expertise). All of my math education was mandatory
| undergraduate classes.
|
| Sure, it's well established that you don't need formal
| education to learn all these things (which applies to
| most fields, not just CS), but they are certainly part of
| computer science and taught as part of formal education
| at I would assume most good universities.
|
| From my experience (which is Germany and Japan, not the
| US) especially postgraduate degrees are what you make of
| them. You can learn nothing relevant for performance
| critical engineering or you can learn a ton.
| zasdffaa wrote:
| >> algorithms, memory layout, cache friendliness
|
| > all of this was an integral part of my formal
| education.
|
| Other than algos, we got none of this.
|
| > the lower-level stuff mostly in elective postgraduate
| classes of my computer science program. From the top of
| my head also things like operating systems, compilers,
| networking, vectorization (SIMD), instruction pipelining,
| branch prediction, threading, NUMA, thread-
| pinning/affinity that help understanding how my code is
| actually executed.
|
| We got compilers. Otherwise none of this - in fact these
| are not computer science by some definitions. It was
| pretty much maths at the end. I don't think we were well
| served in some ways.
|
| > which is Germany and Japan, not the US
|
| I'm in the UK.
| blibble wrote:
| all of that was part of my undergraduate degree in the
| mid 2000s as part of the core course
|
| (oxbridge)
| ascar wrote:
| > We got compilers. Otherwise none of this
|
| Did you have the option to take the relevant classes as
| electives in your postgraduate studies? My postgraduate
| had a single mandatory course and otherwise just required
| that I spread my classes among 3 of ~7 major focus areas.
| One of these areas was computer architecture, which
| taught me most of the low-level things I listed above.
|
| Another thing I forgot above was formal education in
| distributed systems and databases, especially the
| postgraduate databases class that covered the inner
| workings (like transactions, WAL, dependencies,
| rollbacks, etc.) and distributed databases, which nicely
| connected with the distributed systems lecture (which
| dealt a lot with CAP theorem and consensus, e.g. paxos).
| That's also something you can learn on the job, but the
| formal education gave a pretty broad background that I
| would think is hard to learn on the job.
|
| > computer science by some definitions
|
| I guess if there is a distinction between computer
| science and for example computer engineering they would
| mostly end up on the computer engineering side of things,
| which sits somewhere between computer science and
| electrical engineering. Though the level on which I
| studied these concepts in our computer science department
| was to understand how it works, history and state of the
| art and it's implications on software. It was less about
| how to create such a system from the electrical
| engineering side of things.
| zasdffaa wrote:
| > Did you have the option to take the relevant classes as
| electives
|
| Dunno. It was a long time ago. To be fair, a lot of the
| stuff you mention learning just didn't exist back then -
| it was a long time ago. Then again, we did a database
| course and we got no hands-on with a real DB at all. It
| was all random guff about functional dependencies etc. I
| learnt literally nothing useful. I know about WAL etc
| from learning after.
|
| > I guess if there is a distinction between computer
| science and for example computer engineering
|
| You nailed it. Engineering vs science. The science was
| taught purely in the abstract, application of it to real
| problems was even held somewhat in contempt by one
| lecturer. It could and should have been so much better.
| NavinF wrote:
| > What about models of computing, or defining what we even mean
| when we say "computing"?
|
| IMO starting with that is the worst possible way to introduce
| CS to students who are (statistically) far more interested in
| programming and software engineering than in CS. Hell, most
| students in this class are probably there only because it's a
| prereq for the class they actually want to take.
| rst wrote:
| It's a first course in _programming_ , with occasional glances
| at other relevant topics, whatever the title.
|
| MIT tried to do an intro course which was actually an
| introduction to _principles_ , but the effect was so harsh that
| undergrads without previous background in programming were
| often advised to take a more conventional "intro to
| programming" couse first. The textbook, "Structure and
| Interpretation of Computer Programs", is still available -- but
| the course is no longer taught at MIT, after they decided it
| was no longer serving the needs of the students.
| drc500free wrote:
| Thank you for giving me a flashback to 20 years ago,
| realizing that I couldn't perform in 6.170 because I didn't
| know Java but there were no Course 6 classes that taught
| Java.
| UncleMeat wrote:
| In my experience, the huge majority of people who take an intro
| CS class want to learn how to solve problems with programs and
| to learn how other people solve problems with programs. At
| Stanford, almost every single undergrad takes an intro CS class
| but only a fraction of those go on to major in CS or get a job
| in software. You've got one class to provide useful information
| to people - teaching people about models of computation or set
| theory is not going to capture people's interest or help them
| meaningfully in the future. But if somebody says "hey, I know
| enough python to figure out how to split up a huge PDF into
| individual files, one for each page, then suddenly they are
| empowered to solve problems.
|
| Same reason we wait until Real Analysis to teach delta-epsilon
| limits while the engineers are off taking PDEs.
| cinntaile wrote:
| > Same reason we wait until Real Analysis to teach delta-
| epsilon limits while the engineers are off taking PDEs.
|
| This is very country dependent, we were taught delta-epsilon
| limits in high school. Maybe not with the same depth, I don't
| know.
| indymike wrote:
| If you look at the "lecture notes", yes it seems ad hoc. After
| looking through some of the readings, I think this is a
| fantastic, very comprehensive survey class.
| molticrystal wrote:
| When a person completes week 4, they'll have learned boolean
| logic, if/for loops, bytes & variables, and had an overview of
| hardware from the previous weeks.
|
| If the person is ambitious, that is the minimum required to
| begin, and it might be worth seeing just how far they can get in
| Nand2Tetris[0] where a person simulates building elementary logic
| gates and circuits leading to an also very basic Arithmetic logic
| unit and simple ram from nand gates.
|
| I wouldn't expect the person with just a few weeks of CS101 to do
| week 4 of Nand2Tetris where they try out machine language on
| their machine that leads to building an assembler, and then a
| compiler, as this eventually requires knowing Java or a similar
| language, but more power to them if they preview the course and
| see how much they can understand.
|
| [0] https://www.nand2tetris.org/
| john1633 wrote:
| There is an error on the 16th slide of the second lecture: XOR
| only returns true when the inputs are _not_ the same.
| (https://web.stanford.edu/class/cs101/lecture02.html#/16)
| [deleted]
| israrkhan wrote:
| I like the course, but more than the course I like various
| recommendation in this post. This is best part of HN.
| gorgoiler wrote:
| Are functions part of the course? Functions are both extremely
| practical for real world problems where code is repeated but with
| different values, as well as of course being fundamental to the
| theory of computation.
|
| I very much enjoy introducing my pupils to functions. It is the
| first time they really get to use the computer as a tool for
| accelerating their abilities. Up until then, their code has
| utility in the order of how much they wrote. Functions can let
| you write a page of code that does so much more.
| photochemsyn wrote:
| This looks like a very practical course that introduces a lot of
| tools/concepts valuable for any student in any field relying on
| the modern computational setup. However, actually learning
| programming however is just a time-consuming effort and there's
| no real way around it. There's a whole industry built around 'we
| can teach you programming in ten weeks' or whatever and it's all
| nonsense.
|
| Some years ago I was working full-time in a molecular biology
| lab, and part of the job involved using a lot of computational
| bioinformatics tools. I knew a couple of CS people who were
| writing bioinformatics software and they showed me pages of code,
| and I asked "realistically, how long would it take me to learn to
| write these kinds of programs" and the answer was always "at
| least two years of full-time effort" (It was mostly C code they
| were working with at the time, plus Java for the user
| interfaces). My personal experience finally learning to program
| over the past few years is right in line with those estimates.
|
| There aren't really any shortcuts, you just have to put in the
| hours of work, week after week, month after month, year after
| year. As with most fields, a lot of the introductory material is
| outdated for modern industry but since the more advanced
| technology relies on an understanding of the basics, you can't
| just leapfrog it, that's like trying to learn calculus without
| ever taking any algebra, or trying to grok CRISPR without knowing
| how basic DNA replication works.
| Arisaka1 wrote:
| Not that I disagree with you but I don't see what the course is
| promising as anything close to what you juts described and rant
| about, and neither does it claim that it won't take time. Were
| you perhaps attempting to respond to someone else's comment?
| oxff wrote:
| It's a weird porridge of topics.
|
| Just do this instead: https://dcic-world.org/
| srvmshr wrote:
| HTDP by the same authors is a much more solid foundation. DCIC
| is okay but I feel for a very narrow spectrum of people.
| mrits wrote:
| that books reads like an infomercial to a bad programming
| language
| no_time wrote:
| How hard does it get later on? This looks very tame and quite
| fun. In comparison, here in Hungary our "Basic computer science"
| was filled to the brim with graph theory and was absolutely
| joyless.
| steve76 wrote:
| xwdv wrote:
| What I ultimately came to realize about all computer science is
| that all problems are basically figuring out how you will do 3
| steps:
|
| 1. Organize data 2. Transform the data according to some input.
| 3. Output a result.
|
| Once you've very clearly mapped out your data structures,
| everything else becomes fairly trivial. Functions are nothing
| more than turning data from one form into another. Outputs are
| just data in some new structure that can be easily consumed for
| some other purpose.
|
| I challenge anyone to find a problem that doesn't fit this
| formula.
| [deleted]
| cardy31 wrote:
| This has already been mentioned, but I can't recommend CS50
| highly enough. It literally changed my life. I was doing a music
| degree and ran into CS50 on Reddit somewhere and decided to give
| it a shot. Long story short I ended up getting a CS degree and
| working for a large tech company.
| nightski wrote:
| It is much more programming specific focused, but I still think
| my favorite intro to programming course ever is the original 1986
| Structure & Interpretation [1].
|
| [1] https://www.youtube.com/playlist?list=PLE18841CABEA24090
| SneakyTornado29 wrote:
| BTW this is not the intro stanford cs course. Take CS 106A! It is
| the best intro to CS I've ever seen. This course is like AP CS
| Principles whereas CS 106A is like AP CS A.
| khaki54 wrote:
| This course looks "fine"; however, I would recommend that anyone
| interested in exploring CS (or perhaps even if you are a self-
| taught and very able coder who wants to learn those missing
| fundamentals ) takes CS50 out of Harvard.
|
| It is easily the most engaging course I have ever taken and it's
| available for free on edx.org or you can take the "real" class
| from Harvard extension for a couple grand. You can go into this
| class as an underwater basket weaver or a strong coder and get a
| ton out of it.
| aabhay wrote:
| I'd recommend CS 61a/b/c from UC Berkeley. I think it's
| available online as well. The reason I like these three courses
| is that they cover the three key aspects of computing --
| programming, data structures, and machine structures. I find
| that the last part is often left out because we "abstract" away
| low level features of computers, but learning even the basics
| of page tables, caches, instruction sets, timing, etc. is
| extremely critical to a complete understanding of what's going
| on.
| pamelafox wrote:
| I was the most recent instructor of 61A and just wrote up
| tips on auditing it: http://blog.pamelafox.org/2022/07/how-
| to-audit-cs61a.html However, I don't recommend 61A for folks
| new to programming, it's better as a second course.
| lunarboy wrote:
| I took 61a under DeNero as a transfer with high school APCS
| and college intro class experience, since the dept didn't
| let me waive the scheme/lisp part. And I was shocked at
| difficulty, like "no way kids programming for the first
| time as freshmen can keep up with his course pace"
| aabhay wrote:
| Hm I took it under someone else so I'm not sure what it's
| like these days. Sad that it has such a reputation.. I
| was able to ace the course and transfer into EECS my
| freshman year, so things probably have gotten much harder
| in the last ten years.
| pm_me_your_quan wrote:
| I took it when I was an undergrad (that was ten years ago,
| but I hope the spirit remains the same) as my first CS
| class. It was very tough given my preparation, but the
| thing I appreciated was that it gave a very general
| introduction to many high-level concepts in fairly good
| detail. I felt I had a solid starting point in many things-
| programming paradigms, understanding data abstractions,
| levels of abstraction in program design, etc that I don't
| always see replicated in other introductory material.
| cloogshicer wrote:
| I honestly don't understand why people keep recommending CS50.
| Maybe I'm just a slow learner, but I really think that if I had
| had to learn programming with that course, I would never have
| learned it - the learning curve is really steep, and it crams
| way too many languages into a very short amount of time, making
| you a jack of all trades and a master of none. I also don't
| understand the obsession of CS curricula to have people
| implement things like sorting algorithms by hand. This would've
| really put me off as a beginner.
| BossingAround wrote:
| Agreed. I also didn't like CS50 very much, and I wouldn't
| recommend it to folks. I think people love it because it's
| entertaining.
| lolinder wrote:
| Has it occurred to you that your dislike for it may be due
| to the fact that you're not the target audience, rather
| than that there's a problem with the course? In your
| previous comment (since deleted), you noted that you had
| been programming for a few years before you tried it. It's
| an introduction to the subject, so you were bound to find a
| lot of it to be beneath you.
|
| In my own experience working with a _lot_ of brand new
| programmers, making the subject entertaining is 80% of the
| battle. Most introductions to CS are unbearably dry and do
| a very very poor job of motivating further study. The job
| of an introductory course is to give an overview of what
| you 'll learn going forward and make you _want_ to learn
| those things, and by all accounts (even yours) CS50 does
| that.
| BossingAround wrote:
| It absolutely has occurred to me that I'm not the target
| audience. That said, I still think there's a problem with
| the course in as much as I don't agree with the method
| selected.
|
| In other words, CS50 is probably great if it is the one
| and only course a new person would take. This is due to
| the broad focus on so many concepts.
|
| However, if it is the first out of many courses, I would
| not choose such broad focus. I would (and have done many
| times) create a curriculum based on the student's needs
| and desires.
|
| That's why I don't like CS50. It's not because I'm not
| the target audience necessarily, it's that CS50 is
| overhyped and, in my humble opinion, not suited to be the
| first course for serious self learners.
|
| By not suited, I mean that there are a number of
| specifications on Coursera that are a) also free, and b)
| will lead one better to the goal if the goal is known
| (which is where most newbies need a mentor). I do not
| mean that CS50 is unsuitable; I mean that it is
| suboptimal. In my experience, that is.
| lolinder wrote:
| Thanks for the substantive reply! It's good to get a
| different perspective.
|
| I think you may be right about it being suboptimal for
| self learners. It was, after all, not really designed for
| that. I disagree that the breadth of the course is a
| flaw.
|
| One major problem I consistently see with self-taught
| individuals (including myself before college) is that
| they have major blind spots, places where they don't know
| what they don't know. A broad introductory course that
| _intentionally_ doesn 't restrict itself to topics the
| student is already interested in is the best way I know
| to quickly turn those unknown unknowns into known
| unknowns. Whether or not the student chooses to fill
| those gaps in later with further courses, they'll be
| better for knowing where the gaps are.
| cardy31 wrote:
| My experience was the opposite. I went in with absolutely no
| programming experience. It took me a week to figure out how
| to do the first problem set (boy are loops ever amazing).
|
| CS50 got me interested enough in programming to pursue it as
| a career. I have a CS degree now, and work at a well known
| tech company.
|
| I don't think the audience is "people who know some
| programming already." It is designed for absolute beginners
| and assumes very little about your prior programming
| knowledge. I recommend it to any beginner looking to see what
| computer science is about.
| Aperocky wrote:
| > making you a jack of all trades and a master of none.
|
| Master of a single programming language is a moot concept, it
| either boils through to other languages or you just memorized
| the syntax really well.
| bidirectional wrote:
| This is going too far in the other direction. There are
| absolutely people who have mastered e.g. Java, CPP or
| whatever with language-specific knowledge. Being an expert
| on JVM internals won't boil through to Haskell.
| Aperocky wrote:
| JVM is essentially project knowledge, if you're writing
| code that requires you to understand JVM internals really
| well, unless you're working on JVM directly, something is
| wrong within the division of labor. Programming with java
| requires no internal JVM knowledge bare the bare minimal
| surface ones (execution args, etc).
| BossingAround wrote:
| We do have CLR, BEAM, HaLVM, and LLVM. Understanding the
| JVM translates to understanding similar architectures.
| bidirectional wrote:
| Why? If you're working on a performance critical
| application, you need that knowledge. Plenty of HFT firms
| use Java.
| markdestouches wrote:
| What's the reasoning behind picking Java for a
| performance critical application over something like C or
| C++?
| tester756 wrote:
| https://news.ycombinator.com/item?id=12051639
| nightpool wrote:
| Well, being a master of JVM internals _does_ give you a
| very strong grasp on a very useful basket of concepts for
| GC and programming language implementations, so I 'm not
| sure I would necessarily agree that there's no
| transferable overlap. But regardless, neither of these
| are applicable metaphors for a 101 level CS class--at the
| introductory level, you're better getting a broader
| survey of lots of different languages, because learning
| the transferable fundamentals is more important than
| learning the specific "trivia" of any particular
| language.
| BossingAround wrote:
| Are you saying that beginners should always be taught
| multiple languages? Why?
| jacurtis wrote:
| > I really think that if I had had to learn programming with
| that course, I would never have learned it
|
| This is one of the most common misconceptions in general with
| educational institutions and the general software engineering
| job market.
|
| Programming is not Computer Science.
|
| Computer science teaches you how computers work, concepts of
| how encryption works, concepts of security, concepts of
| memory management, and so forth. More recently computer
| programming has been added as a part of Computer Science
| degrees, but actually just a decade or so ago (when I was
| going through it), you could graduate with Computer Science
| degree without programming experience at all.
|
| There is no doubt that learning computer science makes you a
| better programmer, but it is different and it is possible to
| be a good programmer without it.
|
| Programming is one of the practical applications that benefit
| from strong computer science knowledge. Just like how taking
| a human anatomy course or a biology course doesn't train you
| to become a doctor. But it's pretty important knowledge
| needed for doctors to be good at their jobs (so much so that
| we don't let people practice medicine without it).
| scott_s wrote:
| What Computer Science programs were you aware of where
| someone could graduate with no programming experience? I am
| unaware of any.
| BossingAround wrote:
| Quoting someone else in this thread:
|
| > Harvard's course seems to be aimed at people who are
| coders or want to be better at coding, so you learn about
| different languages, algorithms/data structures, SQL and
| such.
|
| CS50 is definitely somewhere between "comp sci course" and
| a "get coding quick" bootcamp.
| noSyncCloud wrote:
| All of these are compelling reasons to take this course. I do
| believe you've talked me into it.
| nojito wrote:
| That's the whole point of the course. It's designed to be a
| catchall introduction to CS.
|
| Learning Programming != Learning CS
| nverno wrote:
| I remember learning mergesort as a beginner was a really eye-
| opening experience. Going through the progression of sorting
| algorithms seems like a perfect way to showcase the power of
| algorithms- they are easy to implement and are used
| everywhere. It's easy to forget how magical recursive
| algorithms are to the uninitiated.
| jstx1 wrote:
| > making you a jack of all trades and a master of none.
|
| - it's not about learning a language
|
| - I don't think it's crammed either - it covers a lot but
| everything is explained in a very accessible way from first
| principles
|
| - if an introductory course was using only one language, you
| still wouldn't master the language
|
| - being exposed to different ways to do the same thing is
| very valuable and very underrated for beginners imo because
| it teaches you to abstract over concepts - when you learn how
| to read a file, write a loop, sort an array in each one of
| C/Python/JS, you develop better understanding of the concept
| of reading/looping/sorting instead of thinking that the only
| way to do it is the way your first language does it; you
| begin to develop a sense of which concepts are language-
| specific and which ones carry over across languages. I think
| it's better if this understanding happens early instead of
| late.
| lolinder wrote:
| > making you a jack of all trades and a master of none
|
| This is exactly the point of any introductory college level
| course. They're never intended to be the end of your
| education, they're designed to be a broad introduction to
| most of the different concepts that you will be learning
| throughout the program.
|
| Even if you're not taking the rest of the program, having a
| broad overview as a starting point is valuable. You won't
| "master" _anything_ in 3 months no matter what you do, so
| starting by going deep just needlessly limits your
| perspective on how much there is to learn.
| [deleted]
| paulcarroty wrote:
| CS50 is really good, and the instructor is real rockstar, not
| a shame to recommend it too. Guess many people expected a
| course like Codecademy with `print 'Programming is fun!'`.
| BossingAround wrote:
| The instructor is definitely great. Me, however, I prefer
| to learn in a bit of a slower style, with less distracting
| acting/performing.
| toinewx wrote:
| can you elaborate on why it is that good? why is it so
| engaging?
| jstx1 wrote:
| Well selected material and great quality of teaching. It's
| for complete beginners and it's very accessible without being
| dumbed down in any way.
| kevinventullo wrote:
| I think this Stanford course is aiming at a different goal than
| Harvard's CS50. Harvard's course seems to be aimed at people
| who are coders or want to be better at coding, so you learn
| about different languages, algorithms/data structures, SQL and
| such.
|
| The Stanford course, especially the second half, appears to be
| more in the spirit of liberal arts. It covers high-level
| concepts in CS (server vs client, how does the internet work,
| what is encryption) that even someone who never writes code
| professionally will be able to use. They'll be better able to
| read newspaper articles on tech topics, or perhaps more to the
| point, better equipped to be a PM/lawyer/BD in the tech space.
| cardy31 wrote:
| > Harvard's course seems to be aimed at people who are coders
| or want to be better at coding, so you learn about different
| languages, algorithms/data structures, SQL and such.
|
| Hard disagree on this one. I learned how to program from CS50
| with no prior experience. That introduction got me interested
| enough to pursue it as a career. I would highly recommend it
| for anyone who just wants to see what the whole programming
| thing is all about.
| cehrlich wrote:
| Harvard's CS50 is specifically described as a programming
| course for non-programmers.
| mycelia wrote:
| Yes, I believe CS 106A would be more analogous to Harvard's
| CS 50.
|
| https://web.stanford.edu/class/archive/cs/cs106a/cs106a.1228.
| ..
| photochemsyn wrote:
| CS50 is a good course but this one has a very useful discussion
| of open source and licensing issues related to various formats
| that CS50 seems to lack.
| otras wrote:
| Strongly second CS50. I took it when first getting into tech,
| and it was a very solid starting point to build my CS
| foundation. I've heard from folks I've recommended it to that
| they've continued to iterate and improve the course as well.
| czernobog wrote:
| I have been hearing a lot about cs50/cs50x. I will take as a
| sign and start the course.
| troupe wrote:
| I'd highly recommend looking at the edX course "How to Code:
| Simple Data" and "How to Code: Complex Data" as an introduction
| to computer science. Those two classes were created around a
| solid pedagogy of how students learn to break real world problems
| down into code. Dr. Kiczales is incredibly good at taking
| everything step by step and making sure nothing gets left out or
| missed.
| jdcampolargo wrote:
| This is better plus you learn programming
| https://www.learncs.online/
| orsenthil wrote:
| After learning programming, practicing with leetcode is a good
| way to learn Computer Science. It will cover Algorithms, System
| Design and Databases.
| opnitro wrote:
| Flagging my two favorite introductions to computing:
|
| How To Design Programs: [https://htdp.org]
|
| A Data-Centric Introduction to Computing: [https://dcic-
| world.org]
| vo2maxer wrote:
| Great suggestions. Thank you.
___________________________________________________________________
(page generated 2022-07-10 23:00 UTC)