4 ms·
> I fully agree with this, and I think the problem is schools too easily trap people into fixed mindsets. There are so many exams in school that if you constant
by lfowles 11y ago
> I fully agree with this, and I think the problem is schools too easily trap people into fixed mindsets. There are so many exams in school that if you constantly get medium to low scores it's easy to think you just aren't smart.
Heh. Not related to there being too many exams, but the second part. Almost changed majors from EE/CmpE to something... softer after the first Calc test in my first semester. Got a 60% on it because I didn't know how to study from highschool. (Freaked me out enough that I studied well enough for a 100% on the next test.)
For continuing education, I attempted doing an online program offered through my alma mater for an EE masters. The course format didn't really fit me or the online format well, but I've found the textbooks themselves incredibly useful for self paced study.
Does anyone have any Computer Science, Electrical Engineering, Computer Engineering textbook recommendations? I'm working through Microelectronics by Sedra/Smith right now, to be followed by Art of Electronics 3e, but I don't know what I don't know. Any textbooks that will change my fundamental view on electronics and/or programming?
- natdempk 11y agoCould you go into more detail about how you actually learned to study and what your technique is now for studying? I'm always curious how other people go about learning things, specifically about how they test mastery of knowledge.
- lfowles 11y agoI sit down and read through the textbook, taking notes on anything that seems remotely important, doing every exercise and problem set (preferably those with answers). I try to really grok the material and integrate it with existing knowledge before moving on. Much slower pace than any of my college courses, but I'm really starting to pick this up. When I get bored of this, I play some games :) Or switch to another topic briefly. As far as testing mastery, my only test is if the material in the book starts to become more intuitive. If I can do the calculations in my head or figure out the relevant formulas and equations without referring to old notes. I've also thought about setting up Anki, but for circuits it seems like a lot of work to figure out how to make usable cards.
- mikekchar 11y agoI don't actually have any textbook recommendations for you, but with respect to Comp. Sci., keep in mind that there is a difference between Comp. Sci. and programming. Obviously there is a large overlap, and you can use a lot of Comp. Sci. theory in every day programming, but programming is a discipline unto itself. I think programming is a lot like writing (prose). You need to read a lot and write a lot. If you want to be a great programmer, I think you should be programming every day -- not just school, or work assignments, but you own code. You need to find your own voice. It is hard to find time to do it, I know. Also, read as much as you can. Open Source software is ideal because you can read code from a lot of different authors. Sometimes people only read their own code or code from their colleagues at work. This can really stunt their growth. Sometimes I think there should be a "Programming" degree in the arts faculties at universities... I'm not a scientist, I'm a programmer. However, the theory that I think will help you most is: - Automata and grammars. Specifically you should know the theory, be able to make regular expressions and be able to write/read BNF. You should definitely know the Chomsky hierarchy and be able to recognize the type of grammar by looking at the BNF or code (this is especially important if you ever write a file format or design a communications protocol). - Group theory - Linear algebra - Basic calculus (may or may not find differential equations useful depending on what you are programming) - Basic statistics (definitely need to know what probability distributions are... lately I've been thinking that Bayes theorem is getting to be more and more important). - Algorithmic complexity (i.e. O() notation). For studying programming: - You should be aware of design patterns and be able to recognize them in code (you don't have to go crazy on it, though). There are lots of good books on the subject. Or just browse c2 wiki. - You should know how to do test first programming. Kent Beck's book "Test Driven Development: By Example", is arguably not the best book on the topic, but it is the book I always recommend to beginners because it is the most straight forward. Other books tend to conflate a lot of issues and to push points of view that (in my mind at least) have yet to prove themselves. Beck's book will give you the basics and allow you to move on from there. - You should know how to make UML object diagrams. Unfortunately, I don't know of any books on the subject that deal only with object diagrams. You don't have to use UML diagrams in real life, but they contain the concepts that you can use when sketching designs. - You should know how to refactor code that is under test. Michael Feather's "Working Effectively with Legacy Code" is the only good book I know on the topic. It is very advanced, though. There may be more gentle introductions somewhere. Martin Fowler's book is a great reference book, but it is not useful for a beginner IMHO. These are the basics, from my point of view. I recommend also learning at least one programming language from each of: - modular (C, Pascal, etc) - Strongly typed OO (C++, Java, C#, etc) - Dynamically typed OO (Ruby, Python, etc) - Pure functional (Lisp, Scheme, Haskel, etc) - Declarative (XSLT, Prolog, etc...) - Assembly (microcorruption.com is a great introduction) Obviously you won't use all of these things all the time (and some you will never use), but for me if someone has all of these things it gives them a good base to work from. I'm probably forgetting some important stuff as well, but that's enough to get you started.
- voltagex_ 11y agoI'm trying to get my hands on http://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/013409266X/ref=dp_ob_title_bk http://www.amazon.com/Computer-Systems-Programmers-Perspecti... but it's quite expensive so I think I'll try to get the 2nd edition. I've also quite enjoyed https://openlibrary.org/books/OL2197699M/Peter_Norton%27s_assembly_language_book_for_the_IBM_PC https://openlibrary.org/books/OL2197699M/Peter_Norton%27s_as... but you may want to repair the damage caused to the book by the Adobe DRM - it appears only one person can read the book at a time.
- petra 11y agoA good book on how to design algorithms :Introduction to algorithms - a creative approach - udi manber