8 ms·
I'm looking for courses that seem to be the opposite of this... no language or programming at all, but instead looking at the process of breaking down problems.
by hatsix 10y ago
I'm looking for courses that seem to be the opposite of this... no language or programming at all, but instead looking at the process of breaking down problems.
We've hired several devs out of bootcamp, and they're all taught how to code, but not how to solve problems using code...
Anyone have material that might be good for this? Books, videos, courses?
- paki123 10y agoSecond this. Would love information. This might be of relevance for you you though: https://math.berkeley.edu/~gmelvin/polya.pdf https://math.berkeley.edu/~gmelvin/polya.pdf
- avg_dev 10y agoCan you give an example of solving a problem using code vs coding?
- tqkxzugoaupvwqr 10y agoHe didn’t mean solving problems using code but solving problems conceptually before starting to code at all.
- hatsix 10y ago^this
- NicoJuicy 10y agoCurrent database: - When you have multiple layers of "companies" ( in a single table: Company) and every company has employees (table: Employee). Request: - List all company employees that have a random company as mother company, including their childs, all layers deep. So you create a optional integer parentCompanyId on the Company for the inheritance ( that's easy) How would you go further? - You may not use a recursion of sql Queries (or in code) to procedurally get the parentCompany or "child companies" of all layers deep. - You may change the database ( and you may use joins also)
- digler999 10y agocoding: "write a socket listener that reads from a buffer and converts it into a null-terminated string". solving a problem: write a program that does (some open-ended business problem). Or generalize the socket listener so that it works on any platform, OS, hardware, network configuration, etc. A coder might do great on confined problem space, but when you ask them to write a larger program they dont normally know how to design it. This isn't just true of bootcamp coders though. Tons of CS grads wouldn't do any better. Otherwise FizzBuzz would have never been a thing.
- hatsix 10y agoParse this file and tell me the total of all $ amounts, and the line where we've reached 50% of the total $. How do you approach this problem and break it down. I've seen problems like this solved by looping through the file twice, because they answer one question at a time... But I'm hoping there is something out there that can teach the general process of breaking down the problem, identifying loops, identifying generalizable code, and anything else that needs to happen before your code can work.
- ue_ 10y agoI have no idea if this works (it did for 3 test cases), and I still end up reading through the array (but not the file) twice. # assuming file with $100\n$200\n$23\n$50 etc. linenum_vals = [] with open('numbers.txt') as input_file: for i, line in enumerate(input_file): try: linenum_vals.append([i, float(line[:-1][1:])]) except ValueError: print("Not a number value on line", i) total = 0 for i in linenum_vals: total += i[1] half = total/2.0 for p in range(len(linenum_vals)): if linenum_vals[p][1] == half: print("Half of total found on line", linenum_vals[p][0]) break else: if linenum_vals[p-1][1] < half and linenum_vals[p][1] > half: print("Half of total in between lines", p-1, p) break else: if p+1 != len(linenum_vals): if linenum_vals[p][1] < half and linenum_vals[p+1][1] > half: print("Half of total in between lines", p, p+1) break print("Half of total wasn't found in the file.") # probably because the list of values isn't in order What way would you do it? I feel like I'm missing something.
- cr0sh 10y agoThinking a little outside of the box - but if you could sort the lines by amount in ascending order, then total from both ends, take half after each addition, then shift a pointer to where "about half" would be based on where you were in the totaling (and which end) as you go. I don't have any specific implementation - or if this idea would even work - but I do think sorting the lines first might be of help toward a better solution (I could be completely wrong on this). As well as tackling the totaling and checking from both ends of the list. You'd have to keep track of everything, of course, in order to know at the end where in the -real list- (unsorted) the half-way total point is at. If this idea has any merit at least.
- jackess 10y agoThis is the only thing I've seen that remotely comes close - but truthfully, the reason it's so hard is because it just comes with experience. https://www.amazon.com/Think-Like-Programmer-Introduction-Creative/dp/1593274246/ref=asap_bc?ie=UTF8 https://www.amazon.com/Think-Like-Programmer-Introduction-Cr...
- aikah 10y ago> We've hired several devs out of bootcamp, and they're all taught how to code, but not how to solve problems using code... Frankly any Algorithms & Data structures book should do the trick. Choosing the right data structure is often half the solution when solving a problem. That plus SICP and a book about Discrete Math should be enough for 90% of the daily problems.
- will_pseudonym 10y agoFYI, it's spelled 'discrete math.' I know this only as someone who spent years incorrectly spelling 'discreet' as 'discrete' because of my math background.
- sulam 10y agoIt's very discreet of you to use a pseudonym!
- busterarm 10y agoPretty much this. I show/tell people all the time that most of solving the problem is how you structure the input data. `Rock, Scissors, Paper` is perhaps the best simple demonstration of this. That said, I don't think it's something that correlates to being a bootcamp grad. I'm usually the one `solving problems with code` and the closest thing that I have to an education in this industry is the boot camp I attended (lifelong programmer regardless). I know other boot camp grads who are the same way. I encounter developers from all backgrounds who know how to code but can't solve problems. There's just _a lot_ of bootcamp grads right now.
- jakobegger 10y agoI'm not sure Algorithms & Data Structures will help you all that much in the real world. In most modern languages, all the algorithms and data structures are already implemented in the standard library, and while having heard of them is beneficial, you won't get a lot of value out of knowing how to do a binary search. The problems that I see most junior devs struggling with are at a much higher level. How do you organize large scale programs? How do you make sure that different parts interact flawlessly? A book about design patterns could help here, but without experience you won't appreciate what the patterns are good for. But by far the most difficult part to wrap your head around is concurrency. How do you make sure your assumptions all hold up when multiple threads / processes / users are all doing stuff in parallel? That's really hard to understand, and you need a combination of theory and experience to master this. I'm not sure what my point is. Software development is hard, a bootcamp and an Algorithms book is probably a good start, but after that you need to still put in a lot of effort to reach your full potential.
- dbla 10y agoThis has programming exercises, but also an introduction that has some good advice on translating problems into code: https://pragprog.com/book/bhwb/exercises-for-programmers https://pragprog.com/book/bhwb/exercises-for-programmers
- BigChiefSmokem 10y agoPut the newbie gumshoes to work by tracking down simple bugs and designing simple patches to fix them. They need to be able to read other people's code to decipher and debug the coding style they are seeing before they are allowed to build any new module themselves. They need to understand other styles so they can form their own. They should be able to detect any code "smells" and reason with pros/cons why their implementation could work better and provide proof (like execution timing or better readability). Playing a lot of puzzle games help as well, especially games where the thing to do is very abstract like in a point-n-click adventure game.
- qwertyuiop924 10y agoI agree on the puzzle games: also, get them on Zachtronics games: Spacechem, namely.
- hatsix 10y agoI'm hoping there's a way to teach them problem solving BEFORE they learn to code... I feel like it should be a prerequisite to enrolling in the bootcamp. I don't remember how I learned it, but it certainly wasn't reading other people's code at my first job.
- moron4hire 10y agoI don't really know of anyone who learned problem solving with a computer before they learned to code. Supposedly Dijkstra, but that man thought computers cheapened computer science.
- joshschreuder 10y agoI feel like there's so much intrinsic to the code to solve the problem though, like how the debugger works, git bisect / git blame to determine where an issue might have arisen, commenting out lines of code and checking if they cause a particular issue, etc. I don't think I learnt about problem solving in the abstract, it was more about specific applications of problem solving in the programming world.
- wodenokoto 10y agoI haven't had time to take this course, though I'd like to. It sounds like it is exactly what you are looking for. https://www.coursera.org/learn/algorithmic-thinking-1 https://www.coursera.org/learn/algorithmic-thinking-1
- gerdesj 10y agoProblem solving .... hmmm It's not solely a programmer thing. You might like to consider people who have been trained to solve problems eg Engineers or Mathematicians int al - they will probably give you more bang for your buck. They will probably have some rudimentary or rather better programming skills as well. Bugger bootcamps ... You pays your money and takes your choice. Cheers Jon
- hatsix 10y agoWell, my current concern is for my cousin, who is in a CSCI program by an ex-Math prof... The problem is that they're teaching her syntax, but not really about how to solve the problems... I don't remember being taught either... but it's certainly something I learned... She's incredibly frustrated because she sees her classmates breezing through class, because they've been programming for years and have learned the general problem-solving skills to get through class... she is having to learn both at the same time. But, since there's so much focus on bootcamps lately, and it's a problem they ALSO have, I was hoping there was a solution there. (my point being... colleges aren't doing a better job at this inherently... it's likely just that students have 4 years to figure it out or drop out, before joining the workplace)
- adentranter 10y agoIve also been trying to find something similar. My dad has been trying to learn to code and all the courses labeled "learn to code" seem to be coding on the web. Not learning "How to solve problems using code". Ive had to take him manually through basics of control structures, variables,etc.
- amk_ 10y agoFor everyday problem solving have you considering starting with an environment like Mathematica, Jupyter, Octave/Matlab, or even Excel?
- jsli 10y agoHow to solve it: the book is definitely teaching a generic way to break down problems.
- sn9 10y agoI have three recommendations: Think Python: http://greenteapress.com/wp/think-python-2e/ http://greenteapress.com/wp/think-python-2e/ Polya's How to Solve It: https://en.wikipedia.org/wiki/How_to_Solve_It https://en.wikipedia.org/wiki/How_to_Solve_It Udacity's Design of Computer Programs: https://www.udacity.com/course/design-of-computer-programs--cs212 https://www.udacity.com/course/design-of-computer-programs--...
- tapan_k 10y agoThank you so much for posting these links. I started reading How to Solve It and am a few pages in, and am so happy to have found this book. This is the value that I find here at HN that keeps me coming back every day. The new tools and new technologies, and the interesting tech news are all very interesting, but none as valuable as the gems that people leave in comments for others to discover, thereby enriching their lives.
- amgando 10y agothere's also Clean Coders: https://cleancoders.com/videos/programming-101 https://cleancoders.com/videos/programming-101 these videos are quirky (!) for sure, but filled with some real gems and a depth of perspective that's rarely found in other online courses. the link goes to a free video intended as an intro to the aspiring programmer. I'm posting this only because I've seen several of these videos and think they've got something special.
- louhike 10y agoIt's from the guy who wrote Clean Code and Clean Coder which are gems themselves !
- known 10y agoI'd recommend https://en.wikipedia.org/wiki/Donald_Knuth https://en.wikipedia.org/wiki/Donald_Knuth and https://en.wikipedia.org/wiki/Analysis_of_algorithms https://en.wikipedia.org/wiki/Analysis_of_algorithms
- emcrazyone 10y agoIt's called experience. Invest well in your people and they will pay you back in dividends
- bobwaycott 10y agoOddly enough, I've been contemplating starting such a service for a while now.
- orlandohill 10y agoHow to Design Programs is written to address this issue. From the preface: The typical course on programming teaches a “tinker until it works” approach. When it works, students exclaim “It works!” and move on. Sadly, this phrase is also the shortest lie in computing, and it has cost many people many hours of their lives. In contrast, this book focuses on habits of good programming, addressing both professional and vocational programmers. With “good programming,” we mean an approach to the creation of software that relies on systematic thought, planning, and understanding from the very beginning, at every stage and for every step. To emphasize the point, we speak of systematic program design and systematically designed programs. http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html
- cenazoic 10y agoAs an accompaniment, the "How to Code: Systematic Program Design" series at edX: https://www.edx.org/course/how-code-systematic-program-design-part-ubcx-spd1 https://www.edx.org/course/how-code-systematic-program-desig... is based on HtDP and uses Racket.
- lloeki 10y agoFrom a higher vantage point, the ultimate reference still is from Descartes in Discourse on the Method of Rightly Conducting One's Reason and of Seeking Truth in the Sciences, esp. Part II [0] https://en.m.wikipedia.org/wiki/Discourse_on_the_Method https://en.m.wikipedia.org/wiki/Discourse_on_the_Method
- lukaa 10y agoI would recommend you to start with general problem solving methods https://en.wikipedia.org/wiki/Problem_solving#Problem-solving_methods https://en.wikipedia.org/wiki/Problem_solving#Problem-solvin... and then choose one that best suites you.
- sixhobbits 10y agoThis is focused on teaching "computer science without a computer" to children, but some of my professors used it for bachelors students too. I'd highly recommended it to people of any age looking to get started with learning computer science: http://csunplugged.org http://csunplugged.org
- SonOfLilit 10y agoHuman Resource Machine is a decent game (from the creators of World of Goo!) that teaches this.
- rsdlearning 10y agoif you want something that is language agnostic check out watchandcode.com He is teaching in javascript but the language he is showing you is irrelevant and it's all about the process