(Part 3) Best computer programming books according to redditors

Jump to the top 20

We found 8,316 Reddit comments discussing the best computer programming books. We ranked the 1,691 resulting products by number of redditors who mentioned them. Here are the products ranked 41-60. You can also go back to the previous section.

Next page

Subcategories:

Web development programming books
Software development books
API & operating environments books
Algorithms and data structures books
Graphic & multimedia programming books
Programming for beginners books
Software design & engeneering books
Microsoft programming books
Game programming books
Functional software programming books
Apple programming books
Parallel computer programming books

Top Reddit comments about Computer Programming:

u/nuclearqtip · 37 pointsr/cscareerquestions

I'm a software dev with 9 years experience, and even I have difficulty finding work. I live in Colorado as well. My qualifications are impeccable. But I still get "no's" for absolutely no technical reason.

My best advice? Work on your resume wording, and your interview people skills. Use active words on your resume, like "initiated", "spear-headed", "lead", "started", "identified". Words that scream out "I'm a leader". It doesn't matter if you have no desire to go into management. The more your resume reads as "I'm a self-starter, I'm a leader, and I'm ALWAYS learning", the better your chances.

Sadly skills alone are becoming more and more ubiquitous. There are scores of self-taught developers out there that dilute the market for people with actual degrees. Budgets being what they are, if a company needs JUST a code monkey, they're going to hire the cheap one. Your degree actually puts you at a slight disadvantage in that arena.

However, if they're looking for a long-term (i.e. quality) person, they're going to hire someone who has NOT ONLY the technical qualifications, but also fits the "perfect employee" model that they have envisioned. This means: pleasant to be around, good customer / people skills, confident (but not cocky), positive attitude. You know, the stuff an HR person would care about. Sit up straight. Make eye contact. Smile. Firm handshakes. Dress well (not too nice though, developers get a bit edgy around folks in suits). Address people by their name. Do not curse. Do not be overly familiar. Do not volunteer too much information (especially things like health conditions and personal quirks). You're interviewing with human beings, who are vulnerable to "gut feelings", "first impressions", and other vague means of evaluating a candidate. Give them every reason to have a good "gut feeling" about you.

This is important: do research about the company before you come in. If you come in, sit down, and act confused about what their business even does, they're going to think you don't care. Find out what the company does, find out what products they make, what their business model is, etc. Find out (if you can) what the employee atmosphere is like. Do everything you can to show that you actually really WANT to work there. This also means attaching a custom cover to your resume, and showing a similar amount of attention to detail that screams, "hey I did this JUST FOR YOU".

As for the technical qualifications, your degree just says "I can be taught". Nothing more. A company who sees a candidate with a degree and a small amount of experience WILL expect you to work for a rather modest paycheck. You CAN scare them off by throwing out a number that's too big. Research the company you're looking at. Use sites like glass-door to find out what level 1 (or similar) engineers are paid. If you can't find information on the company's pay, find a similar-sized company in the same industry. Try to get a realistic idea of what to expect, salary-wise. You can PM me and ask what I made at my very first "real" job after getting a degree.

Also make sure you have a LinkedIn profile. It's surprising how many recruiters hang out on there, just doing searches for keywords, contacting everyone who pops up.

I know you're having a hard time right now, and I know it can be VERY discouraging hearing "no" after "no" (or the classic, "we've decided to proceed with another candidate" line). ALL IT TAKES IS ONE YES. You might be one interview away, but you won't know unless you keep trying. YOU CAN DO THIS. I know it's a lot to keep track of. I know it's a ton of stuff to remember. And I know putting on a brave face especially in the face of financial uncertainty is all but impossible.

I'm not a big believer in positive thinking. But neither am I a big believer in negative thinking. Your post comes across as being incredibly pessimistic and defeatist. While I understand that this is your reality (and please know that this IS a safe place to vent), you need to make absolutely CERTAIN that you leave that attitude at the door when you're interviewing. You're interviewing with people who can and will pick up on that if you're not careful. And like I said, sometimes all it takes is that "unpleasant gut feeling" to cost you the job. Don't give them ammo.

One more word about technical qualifications. Smaller companies put a big emphasis on experience. But larger companies know that experience is cheap, and that what really matters is that you understand the fundamentals. Make sure you understand the fundamentals. This means data structures and algorithms mostly. If it's in your budget to do so, pick up a copy of The Algorithm Design Manual. Once you have a good grasp on the concepts in that book, most white-board coding exercises become much easier. Also, make sure there's (at least) one language you understand REALLY well. Whether that's javascript, or Python, or C, or Perl, or PHP, or Java, or... doesn't matter. Just make sure you have one language that you can actually code competently in.

I know you said you can't move. I live in Colorado Springs. Not sure if that's considered a "move" for you. I work at a DoD company that currently has a number of openings for Java developers, and Javascript frontend developers. It's a modest-sized company (600 people, ish). Your Asthma won't phase them at all (though frankly you really shouldn't ever bring up health issues in an interview). If you're interested, PM me and I'll give you the company name and a few tips about what they're looking for.

If you're interested I can also take a look at your resume and let you know if I see anything that could use some improvement / modification. I know it's really hard to get feedback about resumes. I'm not a hiring manager, but I've spent years perfecting my own, so I like to think I know a thing or two on that subject.

Best of luck.

TL;DR: Just read it. Sorry.

EDIT

I just want to also throw in that I agree with /u/akhbhaat about the gap on your resume. That's not an insurmountable problem, and some companies would still hire you. But, in the words of Ricky Ricardo: "you got some 'splainin' to do". It's not a deal breaker, but it does raise eyebrows. Unemployment can become self-perpetuating because companies assume you're not good enough to be employed. It's bullshit, of course, but it IS now up to you to either take corrective action (go back to school), or come up with a really good excuse as mentioned.

EDIT 2

I also agree with all of the comments about side-projects. Side-projects are a way of showing a company, "I may not have been employed, but I was still actively developing my skills". It also kinda gives them the idea that you're passionate about the field, which is an extremely good impression to give.

Sites like Project Euler and Topcoder might provide a good starting ground to just get you warmed up a bit. Also you may want to consider registering on Stackoverflow and answer some of the questions you know the answers to (don't worry about reputation on there, no one cares). But if you really want to impress them, go start or contribute to an open source project. Doesn't matter what. Doesn't matter what language. As long as it's challenging to YOU and actually teaches you something.

u/gvwilson · 35 pointsr/programming

A shorter (and better) version of the talk is online at http://software-carpentry.org/4_0/softeng/ebse/. If you want to keep up with the latest in empirical studies of programming, check out http://www.neverworkintheory.org/ (where we're blogging once or twice a week about recent findings), or have a look at our book "Making Software" (http://www.amazon.com/Making-Software-Really-Works-Believe/dp/0596808321) which collects the most important findings, and the evidence behind them.

u/ben9801 · 29 pointsr/todayilearned

So make a project, that's how I learned ios dev. Think of a project you want to do and work on it bit by bit, learning along the way.

Also cookbooks are great for exactly this; they outline a project and post the complete code along with a bit of instructions as to what is being done and why.


Here is a textbook that can really help, you can find it for free 'online':
http://www.amazon.ca/Python-Cookbook-David-Beazley/dp/1449340377

Also the 'learn python the hard way' text is only something like 300 pages and gets pretty extensive with the projects towards the end.

u/JonKalb · 28 pointsr/cpp

Modern C++ (C++11 or later) books are not nearly as plentiful as those for Classic C++, but there are a few notables.

Bjarne's college text may be what you are looking for:

Programming: Principles and Practice Using C++ https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784/ref=pd_sim_14_2/144-7765085-0122037

It is aimed at engineers, which makes it less general, but might be good for you.

Of course his general intro is also updated to C++11.

The C++ Programming Language https://www.amazon.com/C-Programming-Language-4th/dp/0321563840/ref=pd_sim_14_2/144-7765085-0122037

This is aimed at experienced systems programmers, so it may be a bit heavy for students, which makes the Primer (that you mentioned attractive).

C++ Primer https://www.amazon.com/Primer-5th-Stanley-B-Lippman/dp/0321714113/ref=pd_bxgy_14_img_2/144-7765085-0122037

Be certain to get the 5th edition.

Of Scott's books only the latest is Modern.

Effective Modern C++ https://www.amazon.com/Effective-Modern-Specific-Ways-Improve/dp/1491903996/ref=pd_sim_14_2/144-7765085-0122037?_encoding=UTF8

This is less an introduction for students than for Journeymen (Journeypeople?) programmers.

For just plain good programming style consider Ivan's book.

Functional Programming in C++ https://www.amazon.com/gp/product/1617293814

Don't be put off by "Functional." This style of programming will make your students excellent programmers.

There are some modern books of high quality that are niche.

The ultimate guide to templates:
C++ Templates https://www.amazon.com/C-Templates-Complete-Guide-2nd/dp/0321714121/ref=pd_sim_14_1/144-7765085-0122037

The ultimate guide to concurrency:
C++ Concurrency in Action https://www.amazon.com/C-Concurrency-Action-Anthony-Williams/dp/1617294691/ref=pd_sim_14_1/144-7765085-0122037

Some library options:

Despite its name, this is mostly reference. A very good reference.
The C++ Standard Library: A Tutorial and Reference (2nd Edition) https://www.amazon.com/Standard-Library-Tutorial-Reference-2nd/dp/0321623215/ref=pd_sim_14_2/144-7765085-0122037

Arthur's book covers C++17, which makes it one of the most modern on this list:
Mastering the C++17 STL: Make full use of the standard library components in C++17 https://www.amazon.com/Mastering-17-STL-standard-components-ebook/dp/B076CQ1RFF/ref=sr_1_fkmrnull_1

To what extent are you teaching C++ and to what extent are you teaching programing?

Good luck and have fun!

u/reddilada · 25 pointsr/learnprogramming

C is a pretty simple language so I imagine you already know the syntax and basic methodology. What C requires is a bit of discipline. To produce maintainable results you need good coding hygiene for lack of a better word.

For this, and especially as a new graduate I would recommend The Practice of Programming by Kernighan and Pike. Kernighan is the K of K&R C. Pike was the original captain of the USS Enterprise.

If you want an antique for your shelf, grab a copy of The Elements of Programming Style, also co-authored by Kernighan.

If you want some interesting projects, go down the Osdev.org rabbit hole. Plenty there to exercise your memory management and pointer foo.

Build your own Lisp is another that teaches some nuts and bolts of programming. Official free on line version

u/__LikesPi · 23 pointsr/learnprogramming

Algorithms are language agnostic but certain books are not. I recommend Introduction to Algorithms which is language agnostic and accompanied by lectures here. But there is also Algorithms by Robert Sedgewick which is in Java and accompanies these lectures and The Algorithm Design Manual which is language agnostic.

u/cfors · 22 pointsr/datascience

Designing Data Intensive Applications is your ticket here. It takes you through a lot of the algorithms and architecture present in the distributed technologies out there.

In a data engineering role you will probably just be munging data through a pipeline making it useful for the analysts/scientists to use, so a book recommendation for that depends on the technology you will be using. Here are some of my favorite resources for the various tools I used in my experience as a Data Engineer:

u/MrBushido2318 · 20 pointsr/gamedev

You have a long journey ahead of you, but here goes :D

Beginner

C++ Primer: One of the better introductory books.

The C++ Standard Template Library: A Tutorial and Reference: Goes over the standard template library in fantastic detail, a must if you're going to be spending a lot of time writing C++.

The C++ Programming Language: Now that you have a good idea of how C++ is used, it's time to go over it again. TCPPL is written by the language's creator and is intended as an introductory book for experienced programmers. That said I think it's best read once you're already comfortable with the language so that you can full appreciate his nuggets of wisdom.


Intermediate

Modern C++ Design: Covers how to write reusable C++ code and common design patterns. You can definitely have started game programming by the time you read this book, however it's definitely something you should have on your reading list.

C++ Templates: Touches on some similar material as Modern C++ Design, but will help you get to grips with C++ Template programming and how to write reusable code.

Effective C++: Practical advise about C++ do's and dont's. Again, this isn't mandatory knowledge for gamedev, but it's advice is definitely invaluable.

Design Patterns: Teaches you commonly used design patterns. Especially useful if you're working as part of a team as it gives you a common set of names for design patterns.

Advanced

C++ Concurrency in Action: Don't be put off by the fact I've put this as an "advanced" topic, it's more that you will get more benefit out of knowing the other subjects first. Concurrency in C++11 is pretty easy and this book is a fantastic guide for learning how its done.

Graphics Programming

OpenGL: A surprisingly well written specification in that it's pretty easy to understand! While it's probably not the best resource for learning OpenGL, it's definitely worth looking at. [edit: Mix it in with Open.gl and arcsynthesis's tutorials for practical examples and you're off to a good start!]

OpenGL Superbible: The OpenGL superbible is one of the best ways to learn modern OpenGL. Sadly this isn't saying much, in fact the only other book appears to be the "Orange Book", however my sources indicate that is terrible. So you're just going to have suck it up and learn from the OGL Superbible![edit: in retrospect, just stick to free tutorials I've linked above. You'll learn more from them, and be less confused by what is 3rd party code supplied by the book. Substitute the "rendering" techniques you would learn from a 3d book with a good 3d math book and realtime rendering (links below)]


Essential Mathematics for Game Programmers or 3D Math Primer for Graphics and Game Development: 3D programming involves a lot of math, these books cover topics that OpenGL/DirectX books tend to rush over.

Realtime Rendering: A graphics library independent explanation of a number of modern graphical techniques, very useful with teaching you inventive ways to use your newly found 3d graphical talents!

u/ethik33 · 19 pointsr/paragon

This is an ignorant, pointless post. I'd like to share with you the unreal engine documentation, and some standard industry software docs, and a book on C++. I'd invite you to learn these and join an indie team if it's so easy, cheers!


u/chris-gore · 18 pointsr/programming

I am actually going to try to be helpful, in stark contrast to the rest of the comments. You actually want to learn two things C++ and the C++ STL, because the STL is the way to actually get work done with C++ these days.

The vast majority of my college classes were in C++, so I have read several computer science textbooks aimed at C++. The least bad of all the ones I have personally used was Understanding Program Design and Data Structures with C++ by Lambert and Naps. It is the textbook that My Introduction to Computer Science I class used back in the day. It is a serviceable into to computer science book; if you new to computer science it isn't too bad, if you are familiar with comp sci then the book should all be trivial but a good way to learn the language. It is kind of old but the basics of computer science haven't really changed since the 1970's anyway so it doesn't matter [Amazon link]. Lambert and Naps seems to have a newer C++ book out, I don't know anything about it; if it is a newer edition or a different approach or what [Amazon link]. The nice thing about the older one is I can vouch that it is okay, and you can get it really cheap used through Amazon.

Bjarne Stroustroup is the original creator of C++. His book, The C++ Programming Language, is a very good and very thorough overview of the language. Be warned though, it reads like a dense college textbook, mostly because it is a dense college textbook [Amazon link].

The other really essential one is The C++ Standard Template Library by Plauger. Stepanov, et al.; Stepanov is the creator of the STL [Amazon link].

My favorite STL book is actually The C++ Standard Template Library: A Tutorial and Referenceby Josuttis. It is a lot more readable [Amazon link].

Remember, the STL is there to be used, and it hasn't sucked since the late 90's, so don't go around making your own string classes and stack classes, except when you are playing around to learn C++.

Also the Boost libraries are really good now too, but it didn't really exist when I was doing C++, so I don't have any idea what is a good book for that.

Good luck! I just gave you about a year's worth of reading material, but at the end you will be a well-qualified C++ newbie.

u/benr783 · 18 pointsr/jailbreak

If you don't have any prior knowledge with programming, I'd first recommend learning Python. If you do have programming knowledge, then jump straight into ObjC. I read these 3 books and my Objective-C knowledge grew so much. I highly recommend reading these books.

Book One

Book Two

Book Three

I'd recommend reading these books in the order I listed them.

After you have read those books, you'll want to get friendly with theos. Theos is what you will use to make your tweaks. Learn how to install/use it here: http://iphonedevwiki.net/index.php/Theos/Getting_Started.

Now, you can look at open source tweaks. There is a great place to see a lot of them: http://iphonedevwiki.net/index.php/Open_Source_Projects.

Once you are comfortable, get started writing tweaks!

Always feel free to PM me if you need any help or have a question. :)

u/rockstar_artisan · 15 pointsr/programming

Can't speak for the whole subreddit, but my personal hatred towards him comes from Martin being a snake-oil salesman.

Take his 3 "laws of TDD". Advertised as a practice equivalent to doctors washing their hands, results in horrible and unmaintainable test suites (I've seen plenty of tests whose idiocy couldn't be explained other way than those rules)

Take his "architecture" lectures. Advocating programming in ruby on rails while abstracting away everything about rails or the web or the database, or anything you didn't define yourself. In principle to enable testing and be able to run the code outside the web. In practice: https://youtu.be/tg5RFeSfBM4?t=299 The lecturer says that the architecture in practice is "horribly complicated" and that Bob had only a single implementation of the architecture, which he couldn't share. That didn't stop him from continuing with his lectures.

Take his blogposts (an example: http://blog.cleancoder.com/uncle-bob/2017/03/03/TDD-Harms-Architecture.html) Awful strawmans (this terrible architecture i drew is what you propose), cringeworthy writing style (lengthy discussions with made up opposition instead of real one). Unfalsifiable theories: "Is is only programmers, not TDD, that can do harm to designs and architectures.". That sentence is always true, either you succeeded and therfore TDD works, or you failed and TDD had nothing to do with it. No data to backup his claims "TDD works." - well there are plenty of publications that disagree (see chapter 12. of https://www.amazon.com/Making-Software-Really-Works-Believe/dp/0596808321)

Take his SOLID principles. While some of them are well defined and can be applied meaningfully (Liskov substitution principle), the Single Responsibility Principle has definition so weak and useless it's ridiculous.

u/huck_cussler · 12 pointsr/learnprogramming

As far as books go:

  • CLRS

  • Dasgupta

  • Kleinberg and Tardos

    Those are the standards. Dasgupta is probably the most immediately accessible, followed by K&T, with CLRS the hardest (imo).
u/[deleted] · 12 pointsr/agile

Meta-analysis of over thirty studies found no consistent effect from TDD. One clear finding was that the better the study, the weaker the signal.

Greg Wilson's lecture: http://vimeo.com/9270320
and book http://www.amazon.com/Making-Software-Really-Works-Believe/dp/0596808321

Wilson's post about the subject: http://www.neverworkintheory.org/?p=139

>I’m still not sure what to think about test-driven development. On the one hand, I feel that it helps me program better—and feel that strongly enough that I teach TDD in courses. On the other hand, studies like this one, and the other summarized in Erdogmus et al’s chapter in Making Software, seem to show that the benefits are illusory. That might mean that we’re measuring the wrong thing, but I’m still waiting for one of TDD’s advocates to say how we’d measure the right thing.

u/kdawkins · 12 pointsr/csharp

Great question!

A lot of intro classes skip over the 'why' and 'how' of programming languages. Lets backup for a second - the purpose of a programming language (C#, Java, etc.) is to abstract away the actual machine code that runs on the hardware. It would be a very difficult and tedious task to write large applications in machine code. This is where the compiler comes into play; even though we have these great high level languages, hardware still only understand machine code. The compilers job is to take statements that we write in high level languages and turn them into machine code.

Now, keeping in mind the above - back to your question. All of the specific words you are wondering the meaning of are keywords the language has. They are reserved for a specific function/meaning and help the compiler understand various traits about the code you are writing (context, control flow, etc.).

String - A String is a type and a type describes to the compiler what kind of data you are working with. In this case, a string means text (words, sentences). That's why variables that are of type String usually have the " ".

Console - (I am assuming that you are referring to the class here) The console class is a group of methods that tell the compiler how to interact with output on a terminal (the black window with a blinking cursor). You can use any methods (like WriteLine) to tell the compiler what you are trying to accomplish. Classes like this save us a lot of time, there is no need to always re-invent the wheel and write I/O code.

Namespace - This is one of the context keywords I eluded too above, it tells the compiler the scope of variables and expressions that you are writing.

Main() - This is a method name! It is a very important method because it is the entry point for an executable!

? - This is the funny one - The question mark operator is actually shorthand for an if/else control flow fixture. If the variable to the left of it evaluates to true, the first expression is executed, otherwise the 2nd. https://msdn.microsoft.com/en-us/library/ty67wk28.aspx

Pro Tip - MSDN is your friend! Microsoft has a lot of great documentation on C#... how did I find the above link? I googled "C# ? operator". Also, if your text book is not working out for you, see if your library has access to the C# 5.0 in a Nutshell book

u/geek_on_two_wheels · 10 pointsr/csharp

Pro ASP.NET MVC 5 (https://www.amazon.com/gp/aw/d/1430265299) is an excellent book for getting started with the web side of .NET.

For C#, it depends: do you have any experience with other languages?

u/GNULinuxProgrammer · 9 pointsr/compsci

Algorithms by Dasgupta, Papadimitrou, Vazirani. This is the most concise algorithms book I've read. It is very to-the-point and has a good collection of algorithms with their proofs.

u/tmckeage · 9 pointsr/csharp

I think some of these are a bit to specific for an entry level position where they know you have no experience ahead of time.

Whats your background in strongly typed languages?

This is a copy paste from a previous comment I made to a similar question I saw in the past:

If they are aware of your lack of knowledge I would focus less on the specifics of C# and more on programming basics, principals of OOP, and what it means to be a strongly typed language...

  1. have a strong grasp of the following: if, else, switch, while, do, for, foreach
  2. understand how to properly use recursion
  3. understand the difference between a reference and value type

  4. Know what the following are: Constructor, Property, Method, Member
  5. Understand how the class object is instantiated
  6. Have a basic understanding of inheritence and interfaces and how they work
  7. Have a basic grasp of the following keywords: public, private, class, new, static, void

  8. know the majority of the c# primatives (int, bool, long, short, string, etc)
  9. Understand how StringBuilder, DateTime, and TimeSpan are used
  10. Understand how a string is an immutable reference type

    I suggest the first four chapters of
    http://www.amazon.com/C-5-0-Nutshell-Definitive-Reference/dp/1449320104

    Also as a note I was in a similar situation, hired as an intern with no c# experience and basic python experience. They know you don't know shit, whats important is when someone explains something to you that you have the vocabulary to understand what they are saying.
u/arsenalbilbao · 9 pointsr/learnpython
  1. if you want to LEARN how to write programs - read "Structure and interpretation of computer programms" on python - SICP (project: you will write an interpreter of "scheme" programming language on python)

  2. if you want to TRAIN your OOP skills - Building Skills in Object-Oriented Design (you will code 3 games - roulette, craps and blackjack)

  3. Helper resources on your way:
    3.1. Dive into python 3 (excellent python book)
    3.2. The Hitchhiker’s Guide to Python! (best practice handbook to the installation, configuration, and usage of Python on a daily basis.)
    3.3 Python Language Reference ||| python standard library ||| python peps

  4. if you want to read some good python code - look at flask web framework (if you are interested in web programming also look at fullstackpython

  5. good but non-free books
    5.1. David Beazley "Python cookbook" (read code snippets on python)
    5.2. Dusty Phillips "Python 3 Object Oriented Programming" (learn OOP)
    5.3. Luciano Ramalho "Fluent python" (Really advanced python book. But I haven't read it YET)

  6. daily challenges:
    6.1. r/dailyprogrammer (easy, intermediate and advanced challenges) (an easy challenge example)
    6.2. mega project list

  7. BONUS
    From NAND to tetris ( build a general-purpose computer system from the ground up) (part1 and part2 on coursera)
u/TransFattyAcid · 8 pointsr/webdev

The agile principles are based around the idea of iterative development. This invites what you're calling rework to make the product the best it can be.

Obviously, you're coming at this from a place of frustration because you want to meet deadlines but the "simple" solution is to build all these steps into your estimates. If you're not setting the deadlines, then you need to be up front with your manager about what you can get done in the given time. Maybe it'll work, but not be clean code (the P.S. here is that after it ships, you need time to make it clean). Maybe you can get features X and Y done, but not Z.

Refactoring and code reviews are part of the job. Yes, your manager is going to make suggestions you might not agree with and, yes, the senior devs are going to send you back to the drawing board sometimes. Sometimes it's because they're jerks and sometimes it's because experience has taught them something.

All in all, I'd recommend reading any of the following by Robert Martin. Clean Coder is perhaps most relevant to estimates and deadlines but they're all really helpful.

u/kryptiskt · 8 pointsr/programming

Practice of programming by Kernighan and Pike is a great book.

u/bixmix · 7 pointsr/VoxelGameDev

Steps to build your own engine from scratch with no knowledge:

  1. Math: http://amzn.com/0201558025
  2. Programming: http://www.amzn.com/0321751043
  3. Intro Language: http://www.amzn.com/125785321X
  4. C++ Language (Reference Books):
  5. OpenGL Intro: http://opengl-tutorial.org/
  6. OpenGL Reference: http://www.opengl.org/sdk/docs/
  7. Scour the internet for voxel info

    Note: Most people who decide to put together a voxel engine take about 2 years from inception. At the end of the two years, they will have a library they could use to create a game. They've also already made it through the first 4 steps when they start.

    Without a degree program to solidify the concepts, I suspect that the first 4 steps will take at least 2-3 years: about 10-20 hours per week each week.
u/c3261d3b8d1565dda639 · 7 pointsr/programming

I think posting material like this with no context is silly, but I upvoted this anyway because I recommend these books often. The Introduction is very short and explains better than I could here why the books were written. The quality of the chapters vary, but they are mostly all worth reading. I'm excited for the upcoming The Performance of Open Source Applications, although I haven't heard any news about its progress in a long while.

One of the editors, Greg Wilson, did some research into how we can be effective programmers. Basically, continuing the research that books like Code Complete were based on. He wrote an excellent book Making Software: What Really Works, and Why We Believe It. He is also involved with the community blog It Will Never Work in Theory, which is tag-lined as software development research that is relevant in practice.

u/xCavemanNinjax · 7 pointsr/java

It's very difficult to answer your question in a single post. You should know the basics of Java of course but what you will be able to do will be limited by what you know. I suggest picking up a book and using online resources and just jump in, get started! You'll learn along the way.

Book that helped me a lot:
http://www.amazon.com/Professional-Android-4-Application-Development/dp/1118102274/ref=sr_1_1?ie=UTF8&qid=1409582592&sr=8-1&keywords=professional+android+development

and Android development ground zero:

http://developer.android.com/index.html

u/def-pri-pub · 7 pointsr/cpp
  1. Learn C++ better
  2. Learn the basic of game development. I don't recommend a full fledged engine like Unreal 4; yet.

    This was my first C++ book:
    https://www.amazon.com/Beginning-C-Through-Game-Programming/dp/1305109910/ref=sr_1_1?ie=UTF8&qid=1502459253&sr=8-1&keywords=game+development+c%2B%2B

    You'll make text based games.

    As for a game development library, I'd recommend RayLib:
    https://github.com/raysan5/raylib

    As it's very simple. It doesn't have a lot of complex things provided for you already (such as Scene graphs and whatnot). You'll need to build that stuff for yourself. But it does give you the basics of graphics, audio, input handling, etc.

    I'd say once you feel comfortable with those two things, you should then move onto something like Unreal.
u/davidddavidson · 6 pointsr/learnprogramming

There is no "best" language for beginning learning but Python is definitely one of the "better" ones you can use in starting out. It has consistent syntax, nicely format, and low overhead needed. Ruby is has a similar style to Python and is also a good language for beginners to learn. Other people can argue that Smalltalk is a good language for beginners and then you have people all the way on the FP side of the spectrum arguing for Lisp/Scheme as a teaching language.

As for Python books I would recommend Python Programming: An Introduction to Computer Science

If you want to try Ruby I recommend The Well-Grounded Rubyist

u/rustajb · 6 pointsr/gamedev

That's a ton of questions and concerns. I'll give my own anecdote.

I have adult ADHD. I have to self-learn as I find classrooms and groups study difficult to deal with. You, like me, have a lot of ambition, ideas and drive. It can seem overwhelming the amount of things you must learn to even start making the most basic of games. I only decided about a year ago that I wanted to dive into game design. I want to make games so badly it's become a laser focus in my life.

There's no correct path, no right way to go about it, but you have to start somewhere. For me that was with learning a programming language: Python. Now you won't see much Python used in gaming, it's rare, however I did learn basic CS skills from spending about 6 months doing nothing but that. I made a few simple text based games like Zork and then started working on a Roguelike. I quickly got in over my head and got frustrated. I'm very glad I spent this time learning Python though, it's made learning C# and JS much, much easier.

That frustration sent me looking for alternatives. I played with GameMaker: Studio. That's a really easy game engine to use, you could feasibly make an entire game without ever coding a single line. It may not be a great game though. That was fun for about a month. In that time I created several very basic game prototypes. I also got a taste of using someone else's game engine. Something I know I could code given enough time, but I want to start making games now.

Then a friend turned me onto Unity. I'm using the free version right now and learning even more. I made a basic Asteroid clone using a great tutorial I found online. That in turn caused me to buy the book Unity 3.x Game Development Essentials by Will Goldstone (Who works on Unity if I am not mistaken.) That book walks you through making a simple first person game and covers everything from start to finish.

While working on my Asteroid game I thought it would be fun to create my own game assets like the ship, the asteroids and the enemy UFOs. So I picked up Blender and started using tutorials. The book I bought for it sucked so badly, I found online tutorials were much more conducive to learning that particular application. It's nice to be able to see someone working on it live, and be able to pause and rewind as necessary. It takes me full days to finish an hour long tutorial that way, but I am learning so much.

My point is, pick one thing and learn it first. If you want to be a game programmer, learn a language like Python or JavaScript. Make some simple games in it. As you learn, you will begin to see, in your head, how you could make a game. Everything suddenly starts to come into focus. The more you code, the more you will see how to do the things you want to do in any game. Even if you don't stick with coding, it's a useful skill I would recommend anyone have. As you work on your first games, you'll see your own limitations and want to expand them on the next project. I really recommend this book for your first language: Python Programming: An Introduction to Computer Science as it will teach you a language as well as the basics of CS and it is well written, fun and easy to learn from. It only took me a month to finish it.

Iv'e been on this path for almost a year now and still don't have a game worthy of showing to anyone. I am building my confidence. Just dive in, start somewhere. Stop thinking about how much you have to learn and just start learning. I put off learning all of this for almost 20 years, I wish I had started sooner. But right now there is an explosion of learning materials, there really never has been a better time to start.

u/djhaskin987 · 6 pointsr/algorithms

My algorithms class presupposed that I took linear algebra, I think. I think you'll need to be able to do maths, but they taught me the maths I needed to know as I went along. It depends on the course, though. Here's the book we used in class. Here's its home page, but the link seems to be broken. It should be online for free. For example, I found another copy here. Here's the PDF Also a free book on linear algebra.

u/llimllib · 6 pointsr/compsci

sipser (I have the first edition which you can get on the cheap, it's very good.)

AIMA

Dragon

Naturally, TAOCP.

Many will also recommend SICP, though I'm not quite sure that's what you're angling at here, it's probably worth browsing online to see.

u/quantifiableNonsense · 6 pointsr/java

The stuff you are learning in CS class is definitely important, but it's orthogonal to the things you will need to learn in the industry.

Read "Code Complete" to get a head start on this stuff. - https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

As far as some fun interviews with famous programmers, another great book is https://www.amazon.com/Practice-Programming-Addison-Wesley-Professional-Computing/dp/020161586X

u/itacirgabral · 6 pointsr/brasil

Fui monitor de web na facul. hoje trabalho mais com backend em nodejs. Javascript é a base e sempre vale a pena ter os fundamentos bem sólidos. Gosto deste livro, baixe aqui.

Com githubpages você consegue ir longe e de graça, meio que já é o padrão do desenvolvedor ter o seu portfólio ai. Você faz seu site estático e hospeda nesse lugar. Github é um site que fornece serviço de git, que é tipo um dropbox pra código. Vale muito a pena, dai tu compra um domínio por 40 reais e bota um email nele de graça.

u/ProgrammingThomas · 6 pointsr/iOSProgramming

Apple's own guide to Objective-C isn't awful. If you need some quick comparisons between Objective-C and Swift, I wrote up a bunch of equivalent code snippets a while back. You may also find the following useful:

u/goldfaber3012 · 6 pointsr/programming

http://www.programming-challenges.com/

The accompanying book has quite good problems (all your CS intro ones, Towers of Hanoi etc)

Another book by the same author (Steve Skiena) called The Algorithm Design Manual is great.

u/steveklabnik1 · 6 pointsr/rust

> there are real studies

have you read http://www.amazon.com/Making-Software-Really-Works-Believe/dp/0596808321 ? It's really interesting.

u/frater_horos · 5 pointsr/math

Lots of recurrence relations, set theory, formal logic and proofs, and of course graph theory. Every once in a while, a little calculus. ( I should note I do not have a PhD, this is just my experiences from some graduate-level courses) I hope this is the sort of description your looking for?

If you'd like a non-gargantuan book to read that gives a good intro to this topic, I'd recommend this one It mostly covers the analysis of algorithms but does go into complexity classes towards the end.

u/periphrasistic · 5 pointsr/OSUOnlineCS

Hmm, I had a very different impression: I thought that Architecture & Assembly and Networks were the two best courses in the program, that Data Structures, Algorithms, and Operating Systems would have been among the best had they been taught a little better (for the former) or were more rigorous (for the latter), and that the Software Engineering courses, along with Web Development, Databases, and Mobile/Cloud were the worst courses in the program.

For SE I, the primary problem, as I saw it, was that the information was either badly out of date, or covered in such cursory depth as to be useless. The course is heavily based upon the optional textbook, and if you actually read the textbook, you'll quickly discover that the overwhelming majority of the research being cited and presented is from prior to 1990, and hardly any of the citations are from after 2000. Likewise, the course focuses heavily on software development process models, specifically Waterfall and Extreme Programming. However, neither process is particularly popular in the 2016 job market; most organizations at least nominally use some form of Agile methodology, but generally not particularly well. In any event, the process model used by your organization will likely be something you learn on the job. Finally, the course almost completely ignores issues of coding style and writing code that can be easily understood by other developers (which is an entirely different skill than writing code which will pass a grading script), and the sections on system design and object-orientation, which should be the heart of a software engineering course, are entirely cursory. SE I is sadly a required course, but if you actually want to learn software engineering, you are far, far better served by carefully reading Robert Martin's Agile Software Development and Clean Code.

The less said about SE II, the better. That course is a disorganized mess and OSU should honestly be ashamed to charge money for it (the bulk of the course content, in terms of lecture time, consists of links to two free Udacity courses).

u/ucsdrake · 5 pointsr/programming

I'm assuming he/she will have to read them first and get back to you, but set gets some great reviews on amazon

u/joeshaw · 5 pointsr/golang

In addition, he co-wrote The UNIX Programming Environment and The Practice of Programming with Rob Pike and The Elements of Programming Style with PJ Plauger. I've never read the Practice of Programming (add it to the wish list) but the other two books are fantastic. The Elements of Programming Style is somewhat dated (code is in PL/I and Fortran, and it discourages things like goto which we all already know is bad) but a lot of it is still relevant and worth picking up a used copy if you can find it.

u/eric_weinstein · 5 pointsr/ruby

> Failing that, are there any good cheatsheets/references for JS "gotchas" and unusual features that devs from other languages might not be familiar with?


There are entire books dedicated to this! (Also some entertaining talks.)


Here are some good JS books not aimed at total beginners:


  • JavaScript: The Good Parts
  • Professional JavaScript for Web Developers
  • Effective JavaScript


    Bonus (to give you a sense of the kinds of "gotchas" you'll find in JS):


    // Even though you pass in numbers, JS sorts them lexicographically
    > [5, 1, 10].sort();
    [ 1, 10, 5 ]

    // You "fix" this by passing in a custom comparator
    > [5, 1, 10].sort(function(a, b) { return a - b; });
    [ 1, 5, 10 ]

    // This probably makes sense to someone, somewhere
    > Math.min();
    Infinity

    > Math.max();
    -Infinity

    // Some things are best left unknown
    > {} + {};
    NaN

    > var wat = {} + {}; wat;
    '[object Object][object Object]'

    Here are a bunch more in quiz form.
u/rDr4g0n · 5 pointsr/javascript
u/enkideridu · 5 pointsr/web_design

>How do you get clients?

80% of my clients I've met via reddit (/r/forhire, /r/torontojobs , most often from people responding to my posts, sometimes months after I post them). A few others were met through friends who worked at the company

> do you charge for the price of a domain an hosting or do you expect the client to take care of it

Depends on the client. Ask them if they want you to take care of it for them.

> I won't want to sound super shady to anyone who might be interested in getting a webpage built by me.

Have a list of prior work, social media presence helps (twitter, linkedin, github). Your portfolio doesn't have to be a website. I send a bulleted list

Having your own domain name for emails should also help. Google Apps is just $50/year.


>I have experience in HTML and CSS

Learn Javascript. At least a little bit. I'd recommend reading this book cover to cover : Effective Javascript by David Herman, a chapter a day, it'll take you 2 weeks, maybe 3.

u/justinlilly · 5 pointsr/compsci

http://www.amazon.com/gp/aw/d/0387948600 -- great book. I used it when studying for my Google interview. The first quarter or so is theory and the rest is just a BUNCH of algorithms, what problems they are good for, what their trade offs are, etc. I'd recommend it.

u/vivalasteve · 5 pointsr/androiddev

As others had said, talk to another developer to see if it is even possible to make another Facebook app.

Other than that, if you have absolutely NO programming experience, learn the basics of Java first. I didn't have too much experience in Java, per se, but I was well versed in Python and Perl so picking up another language wasn't difficult.

Once you have Java down, you could do a few things. First and foremost, definitely go here and follow the steps to download everything you'll need, as well as the beginners guide to making your first app which will explain the basics of how android works. The videos from The New Boston didn't help me all that much, but if you want to take a look it wouldn't hurt. If you want a book, I would definitely get this one. It's written by Googles tech lead for android developer relations, and it will explain everything android to you.

Other than that, just think of basic applications, such as a calculator, photo viewer, stopwatch, etc, and just make them with the help of stack overflow and googles documentation on android.

Good luck!

u/RICHUNCLEPENNYBAGS · 5 pointsr/learnprogramming

Web Forms is, in my opinion, a big mess. However, I think MVC is pretty good and I don't think it's hard to learn. I read the last version of this book and it was enough for me to start creating an MVC app on a two-man team (with me doing more than half the work) and have it ready to launch V1 in two months: http://www.amazon.com/Pro-ASP-NET-MVC-Adam-Freeman/dp/1430265299/

Anyway, relational databases are likely to be with us for some time (NoSQL is still pretty much a niche in my opinion) and "cloud" programming isn't really that different, other than that you can't really count on machine state. All that means is you have to write to a database or a separate file store.

edit: Another thought is that honestly the kind of practices you have to do for cloud Web programming are good ones anyway... even if you're hosting it yourself, not counting on machine state means you can have as many instances as you want, which makes it easy to scale. If you're relying on the machine state you have a much longer road to scaling as you have to figure out how to keep those in sync or else factor out all the code using it.

u/lanedraex · 5 pointsr/csharp

If you are familiar with javascript and java, you probably should just go straight into a web framework book(assuming you want to do C# web development).

Grab a book on ASP.NET MVC 5 or ASP.NET Core MVC.

If you have trouble understanding the language basics on these books, then go back and watch the MVA series and skip the things that you already know.

You can probably find some good resources on Pluralsight as well, if you want video stuff.

Searching the internet you will find many Microsoft code samples, so if you are familiar with web frameworks in general, maybe you can just dive into these samples.

u/jclemon81 · 5 pointsr/learnprogramming

I liked Beginning C++ Through Game Programming. Note that it is very basic, so you'll be creating text/console games. It's best to get the basics right before adding on graphics, audio, etc. From this you could move on to Unity, Unreal, OpenGL, etc.

u/ActionCactus · 5 pointsr/microsoft

I went to school for it, but I'll be the first to tell you that a fucking class isn't the best way to learn how to code. What kind of questions do you have?

If you're confused about why something like "System.out.println("Hi");" actually prints something to the console, I can explain to you what everything in that statement means (it's actually really intuitive and easy, and it's something professors usually don't tell you when they're introducing you to code writing).

If you want a recommendation on where to learn, Khan Academy and Code Academy are fantastic free resources, but another free service that I've found to be phenomenal has been [tutorialspoint.com] (http://www.tutorialspoint.com/java/). I also just recently purchased [a really good C# book] (http://www.amazon.com/5-0-Nutshell-The-Definitive-Reference/dp/1449320104/ref=zg_bs_697342_6); I like what I've seen in it thus far and if one by the same author exists for Java I'd recommend it.

All that said, by all means, ask me (or anyone else in this thread that'd like to answer questions) whatever you'd want. You also might want to check out /r/learnprogramming, and when you start getting to the more intermediate levels of programming stackoverflow.com is one of the best collab resources out there.

I'm not sure if mods would be okay with a programming question thread in this sub, so if you make a new thread somewhere else make sure to PM me so I can help answer your questions.

u/trpcicm · 4 pointsr/programming

When I first started programming, I started with C++. C++ Primer Plus was my primary learning tool, and worked out great. I'm not a full time developer (mentioned as proof that it worked and I didn't wash out of programming)

u/ItWasAValuedRug · 4 pointsr/androiddev

I've never read the book you mentioned, but for me getting started with Android was a combination of The Commonsware Series, Reto Meier's book, and Lynda's Java Beginners series.

However, I did have a little more than a basic understanding of Java.

u/king_crais · 4 pointsr/dotnet

Two books that I thought were good:

Pro ASP.NET MVC

Professional ASP.NET

u/swhite1987 · 4 pointsr/dotnet

I just picked up Pro ASP.NET MVC 5 by Adam Freeman. I'm a chapter or two in, so far so good. It's the currently the best selling ASP.NET book on Amazon.

http://www.amazon.com/Pro-ASP-NET-Experts-Voice-ASP-Net/dp/1430265299

u/marpstar · 4 pointsr/cscareerquestions

I've never done any embedded software development, but as a web developer looking at you from the other side, this is what I see...

At the domain level, you'll be working with different technologies than you're used to. Embedded software developers do a lot more low-level interactions with inputs from sensors, so you'll see less of that. Web developers are generally dealing more with human interaction and data persistence and retrieval.

Another big thing to think about would be your OOP experience. Are you familiar with SOLID? Have you done any real-world development using OOP? Most of the web frameworks available today (from a server-side standpoint, at least...particularly ASP.NET) are rooted in OOP.

If you've got 10 years of experience developing, learning C# will be easy. I wouldn't focus as much on the language itself as I would learning the .NET standard libraries. You'll pick up the patterns as you go. I really liked the "Pro ASP.NET MVC" books, now available for MVC 5.

If you're looking specifically for books on C# and .NET development, I don't think there's any book better than CLR via C#. Don't let the title scare you away, it's a great book for learning the lower-level bits of the .NET platform, which are relevant everywhere from ASP.NET to WinForms.

If you aren't aware, there are huge changes coming to the .NET framework and ASP.NET, so you could choose to focus on ASP.NET 5 and get ahead of the game a bit, at the expense of availability of reference material.

u/Jutanium · 4 pointsr/dailyprogrammer

Head First C# is a great book. That, and C# in a Nutshell taught me everything I needed to know.

u/CrimsonCuntCloth · 4 pointsr/learnpython

Depending on what you want to learn:

PYTHON SPECIFIC

You mentioned building websites, so check out the flask mega tutorial. It might be a bit early to take on a project like this after only a month, but you've got time and learning-by-doing is good. This'll teach you to build a twitter clone using python, so you'll see databases, project structure, user logons etc. Plus he's got a book version, which contains much of the same info, but is good for when you can't be at a computer.

The python cookbook is fantastic for getting things done; gives short solutions to common problems / tasks. (How do I read lines from a csv file? How do I parse a file that's too big to fit in memory? How do I create a simple TCP server?). Solutions are concise and readable so you don't have to wade through loads of irrelevant stuff.

A little while down the road if you feel like going deep, fluent python will give you a deeper understanding of python than many people you'll encounter at Uni when you're out.

WEB DEV

If you want to go more into web dev, you'll also need to know some HTML, CSS and Javascript. Duckett's books don't go too in depth, but they're beautiful, a nice introduction, and a handy reference. Once you've got some JS, Secrets of the javascript ninja will give you a real appreciation of the deeper aspects of JS.

MACHINE LEARNING
In one of your comments you mentioned machine learning.

These aren't language specific programming books, and this isn't my specialty, but:

Fundamentals of Machine Learning for Predictive data analytics is a great introduction to the entire process, based upon CRISP-DM. Not much of a maths background required. This was the textbook used for my uni's first data analytics module. Highly recommended.

If you like you some maths, Flach will give you a stronger theoretical understanding, but personally I'd leave that until later.

Good luck and keep busy; you've got plenty to learn!

u/gamesdf · 4 pointsr/webdev

That's the problem. TBH, Treehouse is fking awful. I dont get all the hype around it. Read YDKJS series. Oh, if you are completely a beginner, read https://www.amazon.com/Smarter-Way-Learn-JavaScript-technology-ebook/dp/B00H1W9I6C. This is a very good book written in plain English, which even 10 year old kids can understand. You can find free pdf file on google. While reading, do freecodcamp.

u/Cpist · 4 pointsr/java

The best way I would suggest is buying a starters Java book online. I'm taking my AP Computer Science class as well and my teacher is also pretty difficult. He goes quick so I definitely recommend trying this. Also, try Khan Academy, PracticeIT, and CodingBat.

Ninja Edit: Grammar.

u/stevewedig · 4 pointsr/androiddev

I think Uncle Bob's PPP Book is the original book from 2002. May be more options by now though.

u/fluicpana · 4 pointsr/italy

Per testare le acque velocemente puoi usare https://rubymonk.com/ (introduce Ruby in modo basico). Anche Coursera, Khan, Udacity e simili hanno corsi introduttivi sulla programmazione.

Mentre se vuoi imparare a programmare, il percorso deve toccare almeno tutte queste tappe, in ordine:

  1. [Computer Organization and Design](http://www.amazon.com/Computer-
    Organization-Design-Fourth-Edition/dp/0123744938)

  2. The Structure and Interpretation of Computer Programs

  3. Un buon libro di Assembly

  4. The C programming language

  5. Compillers

  6. Code complete, The practice of programming

  7. Fai finta di aver letto tutto The art of computer programming

  8. Un linguaggio a oggetti, magari Programming Ruby

  9. O/E Python, Dive into Python

  10. Design patterns

  11. Impara un linguaggio funzionale.


    Da qui puoi partire e specializzarti in quello che ti interessa

u/Kaelin · 4 pointsr/compsci

Study design patterns and read books by the masters.. Find the books that are recognized by the community as "the best". For example "Effective Java" is one of the best books on writing Java beyond the basics.

The Pragmatic Programmer: From Journeyman to Master


http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/ref=sr_1_1?s=books&ie=UTF8&qid=1374154408&sr=1-1&keywords=pragmatic+programmer

Design Patterns


http://www.amazon.com/Design-Patterns-Elements-Object-Oriented-ebook/dp/B000SEIBB8


http://www.amazon.com/gp/product/020161586X/ref=oh_details_o05_s00_i00?ie=UTF8&psc=1

u/wadcann · 4 pointsr/gamedev

My own opinion is that it doesn't matter so much what books you use, especially with Google available to answer questions and provide supplementary examples. Some might be a bit clearer or a bit less, but you're going to get to the same place if you keep writing code and practicing those skills regardless of what you're reading.

If I wanted to learn to program in a given language these days, I'd probably just Google for "<language> tutorial" and start going...maybe bounce among a couple until I find one that's clear. The books I learned C and C++ with were written decades ago and are probably out-of-print.

I'm very dubious that college is the most effective way to learn a language. My experience with college classes is that a class will teach you general concepts, and you more-or-less pick up the language yourself (you'd need to to get the assignments done). Computer science courses will teach you things that are nice to know, like time analysis, but they aren't necessarily the best way to get someone up and running and writing code. I personally think that people tend to do better when they get to explore the things that they're unclear on. The professor might lead you to some important concepts that you might miss, but you don't need college classes to pick up programming, and I'd encourage people not to wait for said classes and hope that they just transform them into a programmer.

Note also that there are a lot of ways to program in C++, and these produce very different-looking programs.

  • It can basically be used as C with an extra feature or two (a string class...back in the day, const...and using iostreams).

  • It can be used in an OO fashion, where new and delete show up.

  • It can be used in the currently-popular OO approach, with Boost and ideally no pointers showing up anywhere.

    Throw in templates and the STL showing up or not showing up, and you've got a fair number of "languages" that fall under "C++".

    My only recommendation is the one I use for trying to learn any new subject that I want to know well: get at least two books or sources on the subject and go through them one after the other, since you'll probably get a better idea of the material after having seen it in two different lights (and if one description of a particular point isn't clear, you have a second one to bounce to).

    There is one difference among books that I would say is meaningful, and that's that some books combine teaching C++ and learning to program and others deal just with C++ as a language and are intended for programmers (sometimes programmers that already know the language). If you want specific book recommendations, you might want to give a sort of idea of what background you're coming from (e.g. do you program at all yet?), because the sort of thing that, say, a junior C++ programmer would use to brush up on his C++ is a bit different from what I think would probably make a good "introduction to C++ for non-programmers" text.

    The last "brush-up" book I bought was Stroustrop's The C++ Programming Language, which taught me that I didn't know the language as well as I thought I had. This is probably behind-the-times enough now that something else is better for brush-up. If you want a "beginning programming" book, looking for something that has "learn" and "c++" in the title is probably a good heuristic.
u/ilkkah · 4 pointsr/haskell

This might suffice

> Standard C++ and the design and programming styles it supports owe a debt to the functional languages, especially to ML. Early variants of ML's type deduction mechanisms were (together with much else) part of the inspiration of templates. Some of the more effective functional programming techniques were part of the inspiration of the STL and the use of function objects in C++. On the other hand, the functional community missed the boat with object-oriented programming, and few of the languages and tools from that community benefited from the maturing experience of large-scale industrial use.

I remember that he discussed the idea in the C++ programming lanugage book, but I cannot find the right passage on the interwebs.

u/dstrott · 4 pointsr/aerospace

Look at using the Eigen library for linear algebra in C++. Its used extensively in CV and AI settings, so there is a lot of info floating about it and lots of examples. It does take some getting used to coming from MATLAB though.

Here are some C++ books that have proven useful to me:
The Bible,
Very Useful,
My favorite data structures book,
[Maybe of interest] (https://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/ref=sr_1_25?ie=UTF8&qid=1484332390&sr=8-25&keywords=data+structures+in+C%2B%2B)

Also, keep in mind that the C++17 standard should be released this year, and there will be a new deluge of books.

Probably want to learn something about numerical analysis:
Numerical analysis

For vehicle dynamics and propulsion, are you thinking more FEA and CFD? If so, learning about GPU programming is probably more interesting since there is so much parallelization...
I recently picked this up but havent really worked through it yet...
but keep your expectations low, it is definitely non-trivial to try to spin your own packages, and it might be more worth your while to look at integrating with something like OpenFOAM for CFD, or to look into some of these packages for FEA. There are a lot of people who have spent a long time making these sorts of tools.

u/FieldLine · 4 pointsr/cpp_questions

Go nuts.

It isn't particularly enlightening; reading the STL itself never is. It is highly optimized, favoring brevity and efficiency over readability.

You'd be better off reading something like this -- I haven't read that particular book, but the author is well known in the C++ community.

u/brotherwayne · 4 pointsr/node

I was impressed with the author of Effective Javascript (link) when I heard him on the js jabber podcast.

u/GrowthMindset88 · 4 pointsr/learnprogramming

http://www.theodinproject.com/ was a great resource for learning web development. I really liked this book by David Herman for more advanced JS techniques: http://www.amazon.com/Effective-JavaScript-Specific-Software-Development/dp/0321812182. Also if your looking into Algorithms, this is probably THE book your looking for http://www.amazon.com/Introduction-Algorithms-Edition-Thomas-Cormen/dp/0262033844

u/plbogen · 4 pointsr/compsci

Skiena's The Algorithm Design Manual. Really helped clear out all of the haze and confusion the impenetrable CLRS book provided even without support of the subpar Algorithms profs I had both in undergrad and grad school.

u/kqr · 4 pointsr/learnprogramming

I really like Making Software: What Really Works, and Why We Believe It. It can be a little heavy at times but it's worth the read. If you want a light introduction to it, there's an extremely good talk that sort of introduces it as a side effect, What We Actually Know About Software Development, and Why We Believe It's True. Even if you don't plan to read the book, I recommend watching the talk. It literally changed the way I live, and I now live in less of a hand-wavey world and more of a firm, fact-based world.

u/takeMeTo88 · 3 pointsr/learnjava

Java: A Beginner's Guide by Herbert Schildt: https://www.amazon.com/Java-Beginners-Guide-Herbert-Schildt/dp/0071809252

I found this to be a great first Java book.

u/corneliuszaius · 3 pointsr/Hacking_Tutorials

Ok, first step; recognize you have no idea what you're doing.

Next, do something about that. ( https://www.amazon.com/gp/product/0071809252/ )

Then try again when you've acquired java grok.

profit.

u/Quinnjaminn · 3 pointsr/cscareerquestions

Copy pasting my response to a similar question:

Edited to have more resources and be easier to read.

It's hard to draw the line between "essential" and "recommended." That depends a lot on what you want to do. So, I will present a rough outline of core topics covered in the 4 year CS program at my university (UC Berkeley). This is not a strict order of topics, but prerequisites occur before topics that depend on them.

Intro CS

Topics include Environments/Scoping, abstraction, recursion, Object oriented vs functional programming models, strings, dictionaries, Interpreters. Taught in Python.

The class is based on the classic MIT text, "Structure and Interpretation of Computer Programs." Of course, that book is from 1984 and uses Scheme, which many people don't want to learn due to its rarity in industry. We shifted recently to reading materials based on SICP, but presented in python. I believe this is the reading used now. This course is almost entirely posted online. The course page is visible to public, and has the readings, discussion slides / questions and solutions, project specs, review slides, etc. You can find it here.

Data Structures and basic algorithms

DS: Arrays, Linked Lists, Trees (Binary search, B, Spaly, Red-Black), Hash Tables, Stacks/Queues, Heaps, Graphs. Algorithms: Search (Breadth first vs depth first), Sorting (Bubble, radix, bucket, merge, quick, selection, insert, etc), Dijkstra's and Kruskal's, Big-O analysis.

This class uses two books: "Head First Java" and "Data Structures and Algorithms in Java" (any edition except 2). The class doesn't presupposed knowledge in any language, so the first portion is covering Object Oriented principles and Java from a java book (doesn't really matter which), then moving to the core topics of data structures and algorithms. The course page has some absolutely fantastic notes -- I skim through these before every interview to review. You can also check out the projects and homeworks if you want to follow along. The course page is available here (note that it gets updated with new semesters, and links will be removed -- download them soon if you want to use them).

Machine Structures (Intro Architecture)

Warehouse scale computing (Hadoop Map-Reduce). C language, basics of assemblers/compilers/linkers, bit manipulation, number representation. Assembly Language (MIPS). CPU Structure, pipelining, threading, virtual memory paging systems. Caching / memory hierarchy. Optimization / Performance analysis, parallelism (Open MP), SIMD (SSE Intrinsics).

This class uses two books: "The C Programming Language" and "Computer Organization and Design". This class is taught primarily in C, so the first few weeks are spent as a crash course in C, along with a discussion/project using Map-Reduce. From there in jumps into Computer Organization and Design. I personally loved the projects I did in this class. As with above, the lecture slides, discussion notes, homeworks, labs, solutions, and projects are all available on an archived course page.

Discrete Math / Probability Theory

Logic, Proofs, Induction, Modular Arithmetic (RSA / Euclid's Algorithm). Polynomials over finite fields. Probability (expectation / variance) and it's applicability to hashing. Distributions, Probabilistic Inference. Graph Theory. Countability.

Time to step away from coding! This is a math class, plain and simple. As for book, well, we really didn't have one. The class is based on a series of "Notes" developed for the class. When taken as a whole, these notes serve as the official textbook. The notes, homeworks, etc are here.

Efficient Algorithms and Intractable Problems

Designing and analyzing algorithms. Lower bounds. Divide and Conquer problems. Search problems. Graph problems. Greedy algorithms. Linear and Dynamic programming. NP-Completeness. Parallel algorithms.

The Efficient Algorithms class stopped posting all of the resources online, but an archived version from 2009 has homeworks, reading lists, and solutions. This is the book used.

Operating Systems and System Programming

Concurrency and Synchronization. Memory and Caching. Scheduling and Queuing theory. Filesystems and databases. Security. Networking.

The Operating Systems class uses this book, and all of the lectures and materials are archived here (Spring 2013).

Math

Those are the core classes, not including about 4 (minimum) required technical upper division electives to graduate with a B.A. in CS. The math required is:

  • Calculus 1 and 2 (Calc AB/BC, most people test out, though I didn't)

  • Multivariable calculus (not strictly necessary, just recommended)

  • Linear Algebra and Differential Equations.

    Those are the core classes you can expect any graduate from my university to have taken, plus 4 CS electives related to their interests. If you could tell me more about your goals, I might be able to refine it more.
u/mavelikara · 3 pointsr/programming

The book has a different approach than standard textbooks. While all other books I have read classify algorithms by the problem they solve, this book classifies algorithms by the technique used to derive them (TOC). I felt that the book tries to teach the thought process behind crafting algorithms, which, to me, is more important than memorizing details about a specific algorithm. The book is not exhaustive, and many difficult topics are ignored (deletions in Red-Black trees, for example). The book is written in an engaging style, and not the typical dry academic prose. I also liked the use of puzzles as exercises.

The only other comparable book, in terms of style and readability, is that of Dasgupta, Papadimitriou and Vazirani. But I like Levitin's book better (only slightly). These two books (+ the MIT videos) got me started in algorithms; I had to read texts like CLRS for thoroughness later. If someone is starting to study the topic my recommendation would be to read Levitin and get introduced to the breadth of the topic, and then read CLRS to drill deeper into individual problems and their details.

u/buggi22 · 3 pointsr/learnprogramming

To do something "complex" (and perhaps by complex you mean "concrete" or "practical"?) with a programming language like python, you'll probably want to learn more about programming language libraries.

The libraries that accompany a programming language are what give it most of its practical power -- they are the bridge between the high-level programming language and the low-level operating system / hardware. You may want to look at some of these, or other libraries, just to get some ideas flowing: wxWidgets (and wxPython in particular, for designing window-based interfaces), OpenGL (for graphics), and ODBC database interfaces (for storing and retrieving large amounts of structured data).

Without an understanding of the OS or the available programming language libraries, you'll end up staying on the abstract side of things. I have a hunch that you might enjoy the book "The Elements of Computing Systems".

On the other hand, if what you want is more complexity while staying in the abstract realm, you could get a good book on Algorithms.

u/thomaslee · 3 pointsr/learnprogramming

Unfortunately there's no substitute for practice, but one way to help you along your way might be to approach this learning from a testing perspective:

Write a few high-level integration or "system" tests that drives your program at a very high level -- ideally such that it doesn't need to deal with your program's internals at all (e.g. if your program should process some files and prints some output, your test might generate your files, call your program to process those files, then check the output is what you expected).

Then write your program against these tests. If you mess up your internal design, you have your high-level integration tests to prove your program's correctness when it comes time to refactor.

Of course, while you're figuring out your internal design you can be using unit tests to drive the design of individual classes too -- but don't be afraid to throw those unit tests away if your internal design happens to need to change.

Lots more detail about this sort of approach in https://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445 -- though I must admit, outside of unit testing everybody seems to have different terminology for testing at different layers (e.g. what that book calls "system tests" I know other folks call "integration tests").

u/purephase · 3 pointsr/rails

I don't think you need it explained from a Rails point of view. Ruby is an OO language, and Rails simply exploits that.

You need to learn proper design patterns in Ruby (which apply to most OO languages). Sandi Metz's Practical Object-Oriented Design in Ruby is pretty much the gold standard for Ruby and very readable.

It's based heavily off of Martin's Agile Software Development, Principles, Patterns, and Practices.

After that, you can look into SOLID but, in Ruby-land, I think the single responsibility principal coupled with the rules laid out in Metz's book (summarized here) is a good place to start.

Also, it's worth noting that if you have good test coverage it makes re-factoring much, much easier.

Good luck!

u/Midas7g · 3 pointsr/PHP

Object Oriented Programming is not for organization, or even for making parts reusable, although those are nice side-effects. OOP is for one thing: making your code easy to change. If you look at your code and discover nested if-elseif statements, or switch upon switch, you're definitely writing spaghetti code that is brittle and difficult to change.

If you use OOP for making your code easy to understand, you'll end up forcing concepts into your code that maybe don't really apply to the actual problem. For example, read chapter 6 from Agile Software Development, Principles, Patterns, and Practices. Everyone who starts solving the bowling problem will introduce the concept of "frames" but actually sticking with that object structure will needlessly complicate the design.

I develop by first writing a test, making it go green and then refactoring out the duplication. Then later when I need to make a change, I only have to understand a small bit of the code and I can make a change in a single place, confident that the places this functionality is shared will also behave in this new way.

My app is deployed weekly with new and occasionally radical features, is used by hundreds of thousands of people a day and hasn't had a single bug regression since we started programming in this fashion.

tl;dr: both of you are using OOP wrong.

u/MegaGreenLightning · 3 pointsr/javahelp

I've read both Effective Java and Clean Code and highly recommend them as well.

There's also Agile Software Development (by Robert C. Martin):
http://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445/ref=sr_1_1?ie=UTF8&qid=1451828712&sr=8-1&keywords=agile+software+development

This book contains among other things a description of the SOLID principles of software design. For example the Single Responsibility Principle tells you that each class should have only one responsibility. This reduces coupling and leads to small and more easily understandable classes. The book also contains some nice case studies showing how to apply these techniques.

While Clean Code deals with writing code and how to design methods and classes, Agile Software Development tackles the topic at a higher level and discusses how to develop and design software consisting of different classes and packages etc. It requires a basic knowledge of programming and OO, though.

Robert C. Martin has also created a series of purchasable training videos at cleancoders.com. These videos cover the topics of both books starting with the rules for clean code and then going into the SOLID principles and other advanced topics.

u/Dylnuge · 3 pointsr/AskComputerScience

Might be biased, but I'm a big fan of Jeff Erickson's Algorithm Notes, which I think are better than a lot of textbooks.

If you really want a book, CLR Algorithms and The Art of Computer Programming both get recommended a lot, with good reason.

If you're interested in computational theory, the New Turing Omnibus and Spiser's Theory of Computation are two good choices.

Finally, I'd check out Hacker's Delight. It's a lot more on the electrical/computer engineering side of things, which might interest you, and it's very detailed while still being quite excellent.

u/wilywes · 3 pointsr/programming

The goto theory book by Sipser.
Excellent for C programming.
Programming in general.
My favourite.
You can probably find all of these at a library.

u/gregK · 3 pointsr/programming

You know what, TAoCP books are pretty good at introducing the mathematical notation from a programming point of view and they do touch on a few subjects you mentioned above. Otherwise maybe a good introductory discrete mathematics book, they usually introduce all the notation and concepts you need to know without any prior knowledge.

Also it is probably better to pick a subject and then learn the notation that goes with that subject as the notation itself can vary from branch to branch. I don't think there is a universal mathematical notation that is standard throughout the world. There is a lot of commonality but it is the small variations that can cause confusion.

u/Milumet · 3 pointsr/learnprogramming

>Where can I start with those?

Book recommendation: Code Complete. Can be a bit dry sometimes, imho.

Less dry: The Practice of Programming. The examples are mainly in C though.

u/egonelbre · 3 pointsr/C_Programming

There's The Practice of Programming that has few examples. Of course study existing programs Coreutils, suckless and 2f30.

Of course, whether you should be using C for that, is a different question. Lately, I've been mostly using Go for small utilities, mainly because of ease of cross-compilation and deployment.

u/im_drinking_whiskey · 3 pointsr/learnprogramming
  • Spend more time working with Java, to become familiar with some of the language's subtleties.
  • Read The Practice of Programming (http://www.amazon.com/Practice-Programming-Professional-Computing/dp/020161586X), to become familiar with some of the more serious issues you'll encounter in day-to-day programming. Computer science courses don't usually emphasize code maintainability, etc.
  • Go back to the programs you wrote a year ago and make them more efficient. Pay attention to what makes them more difficult or easy to work with a year later, to get practical experience with maintainability.
  • Ask a friend to make a change to a program you've written, and tell you what was nice and what was difficult about doing so. If they're comfortable with it, ask to do the same to a program they've written.
  • Find an open source project that you care about and that has a strong developer community, and offer to begin fixing bugs.
u/dvogel · 3 pointsr/programming

To date, the best programming book that I've read is C Programming Language by K&R. It's a pretty complete text on the C language. It is more than sufficient to enable the reader to be a good C programmer, yet it is still entirely digestable by new programmers. It is 274 pages. There are some recent gems, like Programming Clojure (304 pages). However, these days the norm seems to be more like Applying Domain-Driven Design and Patterns: With Examples in C# and .NET (576 pages), Real World Haskell (710 pages), and The C++ Programming Language (1030 pages). These books are all good. They just are hard to carry around and hard to hold while reading for long periods. I'm looking for good programming books that are short; an upper limit of roughly 325 pages. Post links to your favorites!

u/cpp_dev · 3 pointsr/cpp

A handy book might be The C++ Standard Library: A Tutorial and Reference (2nd Edition).
As for something more visual experience I would recommend to watch Going Native 2012 and Going Native 2013 and maybe C9 Lectures: Stephan T. Lavavej - Core C++ then C9 Lectures: Stephan T Lavavej - Advanced STL. After you get a good understanding of new features will be good to read Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14, to understand how and when to use them even better.

u/cauchy37 · 3 pointsr/oddlysatisfying

I personally prefer his The C++ Programming Language over this book as a reference for C++ and The C++ Standard Library: A Tutorial and Reference as a reference to STL. This one feels to me a bit more of a beginner book, still a very good read though!

u/Doctuh · 3 pointsr/javascript

Crockford, then Effective Javascript, then the Resig above, then you branch out into your interests.

u/BestOpinionEver · 3 pointsr/learnprogramming

Objective-C is a fine first language, it won't be as easy as others would but unless your going to give up easy don't worry. The place I started was with this book, it really does a great job and if you go through the whole thing it can help you a lot! Use google, reddit, and stack overflow for any questions you have in addition. Then once you read the whole thing and feel okay about it here is a link to some free podcasts to help you get in the mind of making apps and for some additional support. I would definitely recommend reading all the book first though because those lectures move pretty fast, and that course is set up to be taken after a few of the intro to programming classes are out of the way. Also take advantage of this /r/iOSProgramming

u/defeatedbycables · 3 pointsr/IAmA
  1. The bootcamps that get the media publicity focus on intro to programming to "full stack" developer path, which, depending on your CS curriculum, should be what you get anyways - with added diversions into heavier CS stuff. Most college programs I know of do stuff like Operating Systems, Algorithm Analysis, Systems Programming (C/Bash/C++), Programming Languages (normally several small assignments done in several languages - i.e.: 'Implement quicksort in Ruby, C and Java') and Theory of Computation (my personal favorite) in addition to your 'Intro to Programming/Software Development' courses which is normally 2 semesters of basically learning a language (and the abstract concepts that apply to all languages) and then a Data Structures course.

  2. Anyone in the industry that has knowledge of hiring processes will tell you that a GitHub with many side projects and neat things you've done for either side money or personal growth is more important than a 4.0 GPA.

    I did Java as my language in my undergrad (for the intro courses) and for higher level courses I did a mix of Objective-C, C, Ruby, Haskell, Clojure - whatever really seemed interesting or suited to solving the problem.

    The only way you come to better understand a language and it's nuances, in my opinion, is to use it and use it a lot. Finding out the power of a language (and all common languages do have power -albeit different from each other) is awesome. The more you use it, you'll find what you hate.

    I also read a bunch of side material - Extreme Programming Explained, Objective-C Programming: The Big Nerd Ranch, and the ever popular Learn You a Haskell For Great Good! are some of the things I played with.

    If your curriculum doesn't require but offers a Capstone course, I would highly recommend it. Making a full product from start to finish is an amazing experience and it looks great on a resume.
u/Wolfspaw · 3 pointsr/learnprogramming

There are some good books to help you in your quest, they discusses all programming techniques needed in competitions: greedy algorithms, dynamic programming, data structures... A lot of overlap
between them :

Competitive Programming 2 : Great book, a lot of
information packed

Art of Programming Contest : FREE book available from ACM site

Programming Challenges : From a famous
competition Professor (Skiena)

The Hitchker Guide to Programming Contests : Another FREE book,
Great Ideas

The Algorithm Design Manual : Another book from
skiena, talks about the practical applications of famous techniques and
algorithms used in competitions

Introduction to algorithms : THE book about
algorithms... In-depth explanations

Google code Jam contest analysis : Google Code Jam is a great
competition, with a lot of hard problems. And all of them have a
solution and analysis !

u/apfelmus · 3 pointsr/programming

The standard reference is the Introduction to Algorithms by Cormen, Leiserson, Rivest and Stein. But it's huge and very detailed.

A much more gentle and very practical introduction to algorithms and complexity is the Algorithm Design Manual by Steven Skiena.

u/andrewcooke · 3 pointsr/compsci

another alternative is the algorithm design manual (personally, i like clrs as a reference and this for understanding; sedgewick feels like a textbook, which i guess is an odd criticism, but there you go).

u/erikd · 3 pointsr/programming

The book that he takes about that was about to be published is here:

http://www.amazon.com/Making-Software-Really-Works-Believe/dp/0596808321

u/zapper877 · 3 pointsr/learnprogramming

Get a book and learn the concepts... IMHO if you want to learn to be a better programmer you need to "learn how to learn". My biggest barrier to learning programming was not having the right teacher/ideas formatted in a clear and understandable way. Then I found stephen prata, opened up programming for me.

http://www.amazon.com/Primer-Plus-5th-Stephen-Prata/dp/0672326973/

If you can't learn programming with that book then you should find something else to do with your life.

u/juggerthunk · 3 pointsr/learnprogramming

I got my start by taking AP CS in high school. However, I had already gone to college and that was a while ago, so I read some books on the commute to/from work.

Initially, I read Sams Teach Yourself PHP, Mysql and Apache all in one to learn PHP.

Immediately afterward, I read Murach's Java Se 6 and Beginning Java Objects to learn Java.

Most recently, I read a portion of C++ Primer Plus, but got very sick of it. I've read most of Accelerated C++

I have a few other books on C# to read when the time comes to actually write code.

By the time I had read all of the above, I felt pretty confident on how to structure a program, regardless of language. As such, I was able to pick up Python and JavaScript quite easily just by reading online documentation at Python.org and W3Schools. When I'm writing a web app, I'll rely pretty heavily on PHP's and MySQL's online documentation to help me with whatever syntax quibbles I may have.

I still want to read Game Coding Complete and I'll probably want to find a few resources on programming within XCode.

They all tend to follow the same programming paradigms, to be honest. Java did a good job in getting me into an OOP mindset and C/C++ did a good job at helping me think about how to program things without layer of abstraction. Once I learned these concepts, it was pretty easy to get started with a new language. Programming in PHP can be super sloppy, but taking what I learned from other languages, I'm usually able to write fairly clean code in PHP (especially when I learned how to use classes).

I wouldn't recommend all of the books above, to be honest. I didn't have much ability to do online training at the time and compiled lists of books weren't nearly as useful at the time, so I relied mostly on Amazon book reviews. I'm sure you can find a few choice books on each language you want to learn and go that way. If you were to read books, I think Accelerated C++ is a good book, but works best if you already have some experience programming. I remember like Beginning Java Objects more than Murach's, though both are great as references (which is why they're both still in my bookshelf). C++ Primer Plus spends too much time teaching C and not enough time teaching C++ (you spend pages upon pages learning about C-style strings, aka char arrays, rather than just using the String Class, but I digress).

Ultimately, I could read a bunch about a language, but I never truly learned the language until I started writing in it. I've written a handful of programs just as proofs of concepts and I recommend you do the same while learning any language.

u/Wegener · 3 pointsr/algotrading

I recently started learning C++ (and R) coming from Python and I've been using Prata's C++ Primer Plus. Although this book isn't geared towards financial engineers I think it's probably the best introductory programming book I've used and will be a great reference as well. Beware, the book is around 1200 pages.

Also, the book The Art of R Programming has a small (very small) section in it that discusses using R and C++ (and even Python) together. Probably not worth buying but like ultraspeedz said, there are some nasty pirates that have put the text out there.

u/xgamerx · 3 pointsr/programming

Yeah and let's be honest; how many books are irrelevant as quickly as they are published (especially for fast-moving topics like Android and iOS). Often the book is dated before it even hits the shelves for these types of topics. To be clear, I'm not saying there isn't any value in books (I often recommend Professional Android 4). Just that often other resources are often better suited for rapidly changing topics.

u/Aeyoun · 3 pointsr/Astroneer

System Era Softworks are looking for C++ developers, so your information seems accurate.

I’d recommend you start out [playing around(https://www.amazon.com/Python-Cookbook/dp/1449340377) with Python before committing to C++. It’s much easier to achieve to some tangible goals. Maybe start out scripting some simple tasks. E.g. create ten files that each contain their own creation date and file path. Then progress through making some short text-based multi-choice adventure game (Gender-Neutral-Internet-Person and the Quest for the Reddit Upvotes). Start out simple and see if you enjoy the challenge before committing to learning C++ through game development.

P.S.: System Era lists familiarity with Python as a desired skill. It’s still relevant for automating tasks and getting stuff done even when you learn more complex languages.

P.P.S.: Python 3 is the right choice. 2.7 is an outdated dialect. You’ll know what this means soon enough.

u/nimix16 · 3 pointsr/learnprogramming

If you're looking for a great beginner book, I personally recommend 'Beginning C++ Through Game Programming' by Michael Dawson. Don't let the name throw you off, it's just a different styled intro book and still teaches you all the main concepts. It's pretty much starting off with printing 'Game Over!' rather than 'Hello World!' https://www.amazon.com/Beginning-C-Through-Game-Programming/dp/1305109910/ref=dp_ob_image_bk

u/myanrueller · 3 pointsr/learnprogramming

For free:

Unity or CryEngine tutorials on YouTube.

For cheap(ish) money:

The current Game Development humble bundle

Learning C++ through Game Programming

More expensive:

Lynda.com SFML and Unity courses

Udemy Unity and CryEngine courses

u/sarcasticbaldguy · 3 pointsr/dotnet

Pro Asp.Net MVC is a decent book that will walk you through building a functioning site from scratch.

u/CaptainBlood · 3 pointsr/dotnet

The default recommendation seems to be Adam Freeman's Pro ASP.NET MVC books from APress. It's what I chose and I think it does a great job.

http://www.amazon.com/Pro-ASP-NET-Experts-Voice-ASP-Net/dp/1430265299

u/learc83 · 3 pointsr/gamedev

Sounds like you should check out Beginning C++ Through Game Development.

It's more of an intro to C++ that happens to involve making text based games.

http://www.amazon.com/Beginning-C-Through-Game-Programming/dp/1435457420/ref=dp_ob_title_bk

u/strican · 3 pointsr/UniversityofReddit

Also, check out Coursera and EdX. They usually have beginner programming classes running, and they're actually structured courses. If there's none running, you can usually access the course materials to do self-study.

Also, cs50.tv has all the lectures and materials for the Harvard Intro CS class. It's hard work and rigorous, but rewarding. MIT Open Courseware also has a lot of material from past offerings of their Intro CS series. One of my friends is doing this now.

If you're interested in game programming, I might recommend a book I used to learn. Beginning C++ Through Game Programming is what I used back when I was still learning. Mind you, you won't be learning anything with graphics, but you will be learning programming (and one of the harder, more widespread languages while you're at it).

There's a lot of resources available. Those are the ones I recommend right off the bat. Programming can be tricky, but beginning is the hardest part. Don't get discouraged, stay with it, and eventually, it'll be easy! Good luck!

u/costlymilk · 3 pointsr/technology

Seriously! When I was starting to pursue web design, my dad (a graphic designer) sent me tons of textbooks and personal notes from his college days. It made me realize how nice it was to have years of knowledge, physically laying next to me on my desk.

For those wanting to learn C++, I just recently picked up this book when i was in Oregon http://www.amazon.com/gp/product/1435457420?ie=UTF8&at=&force-full-site=1&ref_=aw_bottom_links
I highly recommend checking it out if you are into games. It teaches you to code through basic game programming.

u/_rere · 3 pointsr/cscareerquestions

Hi there, fellow EE.

We should make a club :)

I believe you can do a crash course into software development and catch up later when it comes to be a better software developer, since you've already been in the market for 4 years I'm sure you know exactly what I'm talking about (job has nothing to do with education, and you can learn as you go), and I know its the same in CS, a lot of companies just want you to do specific thing, and they don't really care about your theoretical knowledge or your full knowledge with software development life cycle.


Since you are an EE graduate I think you can relatively easily land a c++ software development job, but the problem with c++ is that there is a lot of theoretical knowledge is expected from you.

Still I believe if you set aside 3 months of your lifetime and study the following:

Programming: Principles and Practice Using C++

Code Complete

introduction to algorithms

Optional:

Software Engineering

Java Heads first

C# in a nutshell

Note, half of these books will bore you to death, but you have to power through.
Also there will come times where you don't understand what you are reading, I find it best is just to keep going, eventually things will make sense.

I personally find books is the fastest way to learn, and give you the deepest knowledge and always access to awesome tips and tricks that you can't learn at class or from a video.

If you pick those books, you can read from them in parallel, make a habit of finishing a chapter per 24/48 hour and practice 1-2 hours of programming (of what you've learned) I'm sure by the end of the 3 months you will be better than a lot of CS graduates

u/sixothree · 3 pointsr/csharp

You need to pick a project that is bigger than your understanding of the language. It really is that easy.

Since you know a bit of Java, get this book: C# 5.0 in a Nutshell. It's an excellent reference.

I find myself using the following sites:

http://www.dotnetperls.com/

For basic learning.

http://stackoverflow.com/

For finding specific answers.

http://www.codeplex.com/

For finding useful open source projects and libraries.

http://www.codeproject.com/

For finding useful open source projects and libraries, as well as tutorials and guides.

u/ProfJustin · 3 pointsr/Accounting

> https://www.amazon.com/Python-Cookbook-Third-David-Beazley/dp/1449340377
> Also start watching every video David Beazley has on YouTube. You won’t regret it.

Got it!

u/dtizzlenizzle · 3 pointsr/Accounting

https://www.amazon.com/Python-Cookbook-Third-David-Beazley/dp/1449340377

Also start watching every video David Beazley has on YouTube. You won’t regret it.

u/objectified · 3 pointsr/Python

If you're just starting out, you will want to read Learn Python the Hard Way

If you want to learn to do thing the "pythonic" way, I've found that Idiomatic Python is a very good book.

If you already know Python and you want to learn about a wide area of subjects that can be dealt with in Python, I recommend the Python Cookbook. While some cookbooks are somewhat shallow, this book is very different. It provides extensive and very practical information even on complex topics such as multithreading (locking mechanisms, event handling, and so on). It's really worth it.

Also, don't forget to simply read and embrace the pep8 guidelines. They really help you produce good, maintainable Python code.

u/emporsteigend · 3 pointsr/compsci

You may have to look up some of the terms in my reply and I apologize but, hey, you'll learn something.

I recommend Python, for the simple reason that Python manages to integrate several paradigms in one programming language (imperative, object-oriented, and functional) and a lot of what you learn with Python will carry over into other languages if you learn it deeply enough. E.g. Python has metaclasses which I believe were originally implemented in an older language called Smalltalk and so when I went over to experiment with Smalltalk (I like the Pharo implementation), it was no sweat understanding the idea of metaclasses.

Python also prepares you to read the kind of pseudocode you'll see on Wikipedia and in a lot of textbooks because Python reads a lot like pseudocode; it is an eminently readable language and actually enforces formatting conventions for clarity.

And should you decide to do a big advanced project, there are very frequently well-developed libraries available immediately available for your purposes, which is not an advantage you will get with some of the more obscure / less-used languages mentioned here.

For example, need to do machine learning? No problem! There's PyBrain.

Need to study complex graphs? No problem! There's NetworkX. (If you live in the United States, it's your taxpayer dollars at work, so enjoy.)

Need to do genetic algorithms? No problem! There's PyEvolve.

There's even a package for proving theorems in logic, FLiP.

Ruby comes recommended for similar reasons and has a purer object-oriented basis but (in my experience) fewer good libraries.

I have to disagree with several recommendations here: Lisp has been recommended in several posts and I have doubts about how much of a better or effective programmer it makes you; the evidence for such a claim is unclear and pretty much all anecdotal. And a lot of it is based on stereotypes about marginally competent enterprise Java programmer-types. Now that a number of programming languages have taken Lisp innovations like garbage collection and lexical closure to heart, there's not that much of an advantage anymore in Lisp. (IMO.) More to the point, I find that neither any implementation of Common Lisp nor Scheme enjoy quite the same support as Python.

For instance, even though Lisp has a reputation for being used widely in artificial intelligence, the AI libraries I can find for Common Lisp are relatively underdeveloped compared to those you can find for Python. For instance, in the case of soft computing methods in AI (which IMO are far more promising than logic-based approaches), between PyBrain and PyML you've got neural networks, SVM, reinforcement learning and more whereas I could only find fledgling projects like cl-machine-learning for Lisp, which apparently hasn't been worked on since 2009. (The Lisp community is notorious for not finishing projects once started.)

If you must use Scheme, I highly recommend Racket because it appears to be the most full-featured Scheme. (That's a major issue with Scheme: the standard specifies very very little and so the differing implementations tend to be kind of incompatible. One says that Scheme suffers from horrible "balkanization".)

Logo was mentioned, too. The NetLogo implementation is good for fast agent-based programming and a few other things (I found it highly useful for writing a Kohonen network implementation because of its inherently spatial character) but Logo as a language is not that great.

Prolog IMO is fucking terrible. Using it is like pulling your own teeth.

Pure functional programming languages like Haskell are kind of wanky as well. It's usually rather difficult to do anything useful with them because they disallow side effects completely but on the other hand, since you're interested in logic and computation, you'll get a lot of exposure to theoretical computer science ideas through these kinds of languages.

Bottom line is with Python you'll probably get more work done faster and have more fun that way too. And that's what counts.

One last note: I don't like SICP. Go on Amazon and look at some of the negative reviews to see what I mean. I can't exactly say what's a good intro to computer science because I'm well past that point now but this guy appears to come warmly recommended:

http://www.amazon.com/Python-Programming-Introduction-Computer-Science/dp/1887902996

And when you're a little more advanced, and want to dive into data structure and algorithms, the Segdewick "Algorithms" book is excellent, even if it uses Java for all the code:

http://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X

u/cuntilingus · 3 pointsr/programming

Looks cool. Awesome that people go through the work of putting up free books.

I'm currently reading Python Programming: An Introduction to Computer Science. It's a bit slow / too intro, but I wanted to make sure I learned CS fundamentals, since it's been like 10 years since I took CS 161 at uni. :-)

u/35andDying · 3 pointsr/Frontend

Do not worry about frameworks. You need to understand Vanilla JavaScript first. Once you have a good understanding how everything works THEN you can worry about which library is best for each project. Get the basics down at Code Academy then try out Practical JavaScript

A more in-depth approach would be learn javascript properly

A quick lookup/learn guide that I found helpful is A Smarter Way to Learn JavaScript

u/bifurcation_ · 3 pointsr/learnjavascript

I'm currently going through this Kindle book, A Smarter Way to Learn JavaScript, and its associated website, in parallel with Eloquent JavaScript.

I personally feel like I understand better if I read a book with coding exercises, than through sites like Codecademy. Both books have their own coding environments on their sites, to be used with the books. Eloquent JS is much more dense in terms of reading material, so she may or may not choose to read it at the same time or at all.

The "Smarter" book is short, divided into easily digestible chunks of brief chapters, and has quizzes online to test your understanding of the material and to drill the syntax. It doesn't just tell you about a bunch of syntax then say, "Ok, solve this coding challenge; it's easy!" And then, you're left wondering how to start. So far I like this approach because it is a very gentle introduction to the language and its syntax. I think it's a great primer for wrapping one's head around the language, before getting into other heavier materials. Many books that are labeled for beginners make a lot of assumptions about your knowledge going in. This one really is beginner friendly. Other amazon reviewers seem to agree. It's not free, but it's inexpensive.

About me, for reference: I'm a girl (in case that matters). :D I've dabbled a little bit in trying to learn Python and Ruby, but I can't say that I can program at all really, just enough to be familiar with basic concepts like variables, conditional statements, and loops. I'd say I'm intermediate with HTML/CSS.

u/rferranti · 2 pointsr/programming

Not an opposite view, but IMHO definitely worth quoting on this matter:

> If more than 20-25% of a component has to be revised, it's better to rewrite it from scratch. (Thomas et al, 1997)

It's Greg Wilson, author of "Making Software: What Really Works, and Why We Believe It"

u/stormblaast · 2 pointsr/programming

And that is exactly why I recommend reading these books to people. Information online can often be misleading, wrong, old, or all of the above, at least in a book which is praised by so many people, you know that the info which you are getting is top value. I know that learing C++ can be a bit difficult, but remember that you do not need to know all of it at once (heck - nobody knows all of C++, and even Template Metaprogramming was kind of discovered by accident ). I hear that Accelerated C++ is a good book to start from if you already know some programming in another language. C++ Primer Plus is huge, but also good.

u/remotelyqueued · 2 pointsr/learnprogramming

It's not that bad.

Accelerated is quite a bit better but somehow I feel as if I had started with that book, with 0 programming experience, I would have been completely lost. Accelerated is by far the best one I have read yet.

u/devacon · 2 pointsr/programming

7-zip uses a mix of C, C++ and assembly. Unless you have experience with any of these languages, I would highly recommend starting with something much simpler.

I would say if you're trying to learn programming, you need to strip away all the extra 'stuff' that gets packaged up to make a production system. Don't worry about the GUI, and put WPF and C# to the side (for the time being). Start with something simple that will allow you to learn variables, functions, types, control flow, etc. A lot of people recommend Python, and that's a fine place to start. Any language where you can open a new file, write a few lines of code, and see a result would be ideal (Lua, Ruby, Javascript, etc).

More to the point of your question, GUI design is hard. There are all kinds of issues that have to be taken into account: event callbacks from the 'worker' code to let the interface know something changed, threading issues (does the interface lock up while the backend is working?), does the 7z file format even lend itself to parsing just a directory listing without decompressing the entire file?... There is a lot there, and it's not a good starting point. It's something that you can move toward as you learn the basics, though. And I always like looking through other codebases looking for good ideas.

If you're really serious about specifically working with 7-zip, the code is available at their website. You'll need to download the source code from 7-zip.org, then you'll need C Primer Plus and C++ Primer Plus. These are the best 'intro to...' books that I've found for C and C++. You're looking at a few months of reading and experimenting, and a lot of frustration. You're not only going to learn the languages, but also the Windows API that will allow you to interact with the folder views. These are somewhat stubbed out in the 7-zip source, but the specific view you're talking about would need to be written from scratch.

Regardless, it sounds like a fun project and if you put in the time I'm sure you'll get some benefit from it. Just be aware that this is trying to paddle against the current, and it is easier to take a step by step approach (in my opinion).

u/Cristaly · 2 pointsr/leagueoflegends

I spent money on a book in attempts to kinda force myself to sit down, it hasn't gone too well. But when I do, it feels more scholarly so I am more focused on learning?

I got this one for free, it's made by the dude who made C++ himself, and is more accessible than expected!

And I bought this one, since it felt more activity based!

u/thisdudehenry · 2 pointsr/learnprogramming

This was fun Beginning C++ Through Game Programming https://www.amazon.com/dp/1305109910/ref=cm_sw_r_cp_apa_FZs.yb130YGED. They have projects to do on your own

u/Artist_Ji-Li · 2 pointsr/learnprogramming

I had a lot of my start with C++. This was the textbook I used to learn it initially and I had a lot of fun going through this book:

https://www.amazon.com/Beginning-C-Through-Game-Programming/dp/1305109910/(I would suggest reading only up to right before DirectX chapter though, since I believe the DirectX section has been outdated for a long time now for these books. Personally, I only briefly learned to do DirectX programming in general in college and never used it professionally, so I'm not aware of how often much older versions of DirectX is used, but I remember hearing things like the X files format we used in college got deprecated.)

I have worked professionally as a developer in and out of the game industry and I definitely agree that learning C++ to start would actually be advantageous, regardless of what languages you may have to work in later on because it makes everything easier to learn in comparison I feel. I use C# now for my current role and never had taken courses in it or such, but I was able to self teach it because of my C++ background.

u/BM-Panda · 2 pointsr/gamedev

Yo, I just finished working my way through my first game dev book (which took me far too long, 3 months, I burned out after pulling all day sessions for a week, woops) and now I have two questions:

  1. What book should I move on to next to build on the foundations set by those books? There were one or two things that were "beyond the scope of this book" so I want to fill in any blanks I might have.

  2. I also want to just dive right in and try to apply some of this knowledge to actually building a game, but the book only contains information that would really be useful to text-based games as it didn't mention anything about engines, etc. So what's a good engine for mobile games (I want to start with something basic, and if it makes a difference I lean toward android) with a lot of documentation and tutorials to fill in any blanks I might have?

    I'm 29, so I started too late, but I'm excited to get going. Should have acted on this years ago, but I foolishly let other people tell me what I could and couldn't do. Advice to any kids that might be reading: Never do that. Anyone ever tells you they can't help you with the path you choose but "here's some leaflets on business classes as that's a much wiser choice," tell them to bugger off.
u/ericswc · 2 pointsr/learnprogramming

The ASP.NET website has quite a bit of materials.

For books, I'm a fan of this one

u/delphi_edict · 2 pointsr/csharp

There are two good texts that I'd recommend, each have their own bright spots. Pro MVC 5 and Professional Asp.net MVC 5.

u/Insomn · 2 pointsr/dotnet

Think I solved this one on my own (well, actually started using Pro ASP MVC 5 that I bought last week), but wouldn't mind if someone feels like chiming in just to make sure my thinking's right.

The stock OOBE for MVC5, scaffolding controllers w/ EF bindings, is for when you want to get an MVP out ASAP, right? It'll work as is, but there's hella tight coupling between the MVC and EF, very opinionated, and for enterprise-level apps is generally regarded as a terrible idea.

If you want a loose coupling, and just throw everything off to Ninject to resolve you do have to implement the Repository Pattern yourself from the ground up?

u/tescoemployee · 2 pointsr/learnprogramming

There are a lot of brilliant .NET tutorials on PluralSight including it's own Track of 11 videos and more speciality sources (using .net mvc with angular and web api). It's expensive though.

When I started I found that this book really helped a lot.

https://www.amazon.co.uk/Pro-ASP-Net-MVC-Experts-Voice/dp/1430265299/ref=sr_1_1?ie=UTF8&qid=1478025780&sr=8-1&keywords=asp.net+mvc

u/Disagreed · 2 pointsr/learnprogramming

I sent you a message. Beginning C++ Through Game Programming seems to have good reviews on Amazon.

u/idoescompooters · 2 pointsr/learnprogramming

If you're into building any games I would really recommend Beginning C++ Through Game Programming by Michael Dawson here. I have it and it's very good, one of the best. Even if you aren't really into gaming like myself, I would still suggest it.

u/Dicethrower · 2 pointsr/Cplusplus

This is fairly basic stuff, so I'm not sure if you should be trying challenges if you're not ready to do it. No worries, everyone started somewhere.

A good way to start is to find a good C++ book and go through it until you're more comfortable attacking the problem. I started with Beginning C++ Game Programming by Michael Dawson (or amazon). Most books cover what you need in the just first few chapters and I'm pretty sure this one does that as well. Plus you get some insight in game development, which is always fun to do. If all else fails, always remember google is your friend.

That said, I kind of get the idea that, because it's a pastebin, this was posted by a teacher of some sorts. I feel even the smallest hint would give away too much and it wouldn't be much of a challenge/test if others did the work for you. Learning to program is all about figuring things out yourself. There's very little, besides common pitfalls, that someone can teach you more or equally effective, as opposed to just doing it yourself.

u/Sonic_Dah_Hedgehog · 2 pointsr/gamedev

Challenges for Game Designers is a great book had a ton of fun trying out all the different challenges they give you.

Another book I would add to that list is Beginning C++ programming through game design it does a great job at teaching the basics of C++ through some fun activities.

u/BlackOdder · 2 pointsr/csharp

This is my favorite book. Easy to understand but deep http://www.amazon.com/5-0-Nutshell-The-Definitive-Reference/dp/1449320104

u/indu777 · 2 pointsr/learnprogramming

If you are new to programming it is better to take another approach. You should choose your specialization first (game development, web, data mining or something else). Second try to solve problems in that area and use C# for this. For example if your choice is game development then search for books “how to make games with C#”.
If you cannot decide where to go with c# I recommend book: http://www.nakov.com/blog/2014/01/13/free-programming-book-csharp-fundamentals-nakov-presentations-slides-videos-lessons-exercises-tutorial/
It has lots of exercises and will teach you not only C# syntax but also basic programming techniques like OOP principles, algorithms and data structures.
If you already know any programming language then any C# reference book will be sufficient. For example http://www.amazon.com/C-5-0-Nutshell-Definitive-Reference/dp/1449320104/ref=asap_bc?ie=UTF8

u/webitube · 2 pointsr/Unity3D
u/ixAp0c · 2 pointsr/learnprogramming

C# 5.0 in a Nutshell might be what you are looking for. It's more of a reference than a tutorial, and if you don't know Java I'm not sure how hard picking up C# syntax will be (disclaimer: I don't program in C# and haven't coded a single line of Java since it was required in a High School class).

u/sirdoctoresquire · 2 pointsr/dotnet

So, this post is close to a week old. I hope I'm not too late.

Microsoft actually has some pretty good training courses that you can go through for free.

C# Jumpstart

ASP.NET Jumpstart

I used the jumpstarts as a refresher a while ago after I got stuck developing on Oracle for a while and they are both good overviews.

That said, when you are looking at doing MVC .NET development you are really talking about three things. Learning C#, learning about the .NET framework, and learning how to develop in Microsoft's implementation of the MVC framework. I would learn in that order.

Since you have experience with Java, C# should be fairly familiar to you. I'd still recommend skimming over the basic differences. Once you've got that in hand, it is good to learn about the basic offerings of the .NET frame work. I've found that C# 5 in a Nutshell does a great job at going over both C# and the .NET frame work. It is dry, but worth going over. Once you've been through the first few chapters, you can pick and choose where you want to dive in next. IMO, LINQ is great.

Then, once you've got a good grasp for C# and the underlying framework, it is pretty easy to tack the MVC model on to it. The biggest problem I've seen is devs trying to learn every thing all at once. Depending on your experience level, you may be able to dig right in. Best of luck.

u/Mr_Bennigans · 2 pointsr/gamedev

> I think if I learn how to program with an aim to work as a software developer and make games on the side, is this viable after just turning 20?


There's nothing wrong with the age of 20. I started school at 20, graduated in four years, and found work as a software engineer right out school.


What you have to figure out is how to make the best of your time left in school: should you take a class or two on programming and graduate on time, or (more dramatically) change your field of study to computer science and spend a few more years in school? That's something only you can decide. If you want to finish your architecture program and graduate in a reasonable amount of time, I can assure you that your math and physics background will be enough to get you work as a software engineer, but only if you can actually program.


Part of working as a software engineer means being able to program in multiple languages. That's because it's not really about the language, it's about the logic. All languages follow certain patterns and while syntax or wording may change, they all share ways to implement the same logic.


It also means knowing what data structures to use for what scenarios. The phrase "There's no such thing as a free lunch" comes to mind. All data structures have advantages and weaknesses and no data structure is perfect for every occasion. Know the differences, know the performance impact, and be able to speak to them. This won't just help you write better code, it will help you land a job. Interviewers love to ask questions about data structures.


As a corollary to data structures, you also need to know your algorithms. You need to know the performance impact of different ways to search and sort, traverse graphs, and find the shortest path (particularly relevant for game programming).


You said you're learning Python and that's great. Python is a great way to learn how to program. It's dynamic, it's friendly, and it has a rich library. Learn Python inside and out, then pick another language and figure out how to do the same things. C++, Java, and C# are all pretty popular in the industry, pick one of those. Once you know how to program in a few languages, you focus less on minute implementation details specific to one language and more on high level abstraction shared across multiple languages. By that point, you'll no longer be speaking in code, you'll be speaking in plain English, and that's the goal.


I don't know many good free online resources for learning languages, I learned mostly out of textbooks and lecture slides (along with lots of practice). There are some links in the sidebar to some tutorials that are worth checking out. Beyond that, I can recommend some books you may want to read.


  • Algorithms in a Nutshell - one of the best quick references on algorithms you can read
  • C# 5.0 in a Nutshell - excellent language reference, aimed more at advanced programmers, though it's comprehensive in scope, covering everything from language syntax and structure of a program to more complex tasks like threading, multiprocessing, and networking
  • Learning XNA 4.0 - a great game programming book, teaches 2D and 3D game development using Microsoft's C# and XNA framework
  • Java in a Nutshell - another great language reference
  • Starting Out with Java - introductory programming text, has end-of-chapter problems for reinforcement, a little pricey so see if you can find a used older edition
  • Starting Out with C++ - another good introductory programming text from Tony Gaddis
  • Python in a Nutshell - I can't speak to this one as I haven't read it, but I have been extremely happy with O'Reilly's "... in a Nutshell" series so I suspect it's as good as the others
  • Learn Python the Hard Way - free online book about learning Python, begins with simple examples then teaches you how to break it so you know both sides of the story, wasn't as comprehensive as I'd hoped but it taught me the basics of Python
  • Programming Interviews Exposed - sort an all-in-one book covering lots of different topics and giving an insight into what to expect for that first interview

    EDIT: I added Programming Interviews Exposed because it's a good reference for data structures, algorithms, and interview questions
u/cheesekun · 2 pointsr/dotnet

I agree. 50 dollars can get you a 2000 page reference book. Hell 30 dollars can get you a nutshell book http://www.amazon.com/5-0-Nutshell-The-Definitive-Reference/dp/1449320104/ref=pd_sim_b_1

But with StackOverflow & great MSDN documentation is there a real need for books that gather dust?

u/tidier · 2 pointsr/Python
u/BobBeaney · 2 pointsr/learnpython

Oh, definitely learn the correct Python 3 idioms. You might want to augment your learning resources with the latest edition of The Python Cookbook which has been updated to Python 3. It's not free but well worth the price!

u/vsonicmu · 2 pointsr/programming

If anyone's interested, Dave Beazley's Python Cookbook (Amazon Link ) has a recipe on implementing multiple dispatch via decorators. This is really just an example to illustrate complex decorator use, so I wouldn't recommend it. But it's possible (and clever)

u/pyvlad · 2 pointsr/AskReddit

Quite simply, get a book on programming instead of on a specific language. They all focus on algorithm design, and teach the specifics of the language they're using only to the point that it helps the main lesson. I'd suggest a book that uses Python, because, as a higher-level language, you don't have to deal with a lot of the small details of C/C++/something else. It's pretty easy to learn them later on, if you want to, but that's a good starting point.

Note: I used this, so on the one hand, I may be biased, or on the other hand, this may genuinely be a good textbook.

Good luck!

u/ironykarl · 2 pointsr/Python

I'm working through this, right now. Its intent is more to teach general CS concepts. There's a good chance that once I'm done, I'll want to work through something that's more about thoroughly learning Python.

I guess you'll have to tell me whether this book fits that bill or not. If it does, I'm definitely game.

u/Lesabotsy · 2 pointsr/learnprogramming

The best introductory to programming in Python (and CS in general) book I have ever read ...

u/asdfqewr · 2 pointsr/programming

There is a lot going on here in this post. Clear your head, download Python, reference this text for the big picture or spiritual enlightenment, and this text as your road map into the unknown. If you get lost in the examples refer to the first text. Spend 2-3 bouncing back and forth between these two sources and you'll be well on your way.

u/cakerunner · 2 pointsr/learnjavascript

Just a head's up: EloquentJS will go over your head really fast really soon if you've no introduction to programming to begin with. I struggled with it and am still not nearly halfway through. Instead I've focused on other tutorials like ASmarterWayToLearnJS to help me understand the fundamentals better before diving into EloquentJS. As others have suggested, try some of the online tutorials first so you don't get overwhelmed.

u/babbagack · 2 pointsr/learnprogramming

try Mark Myer's book A Smarter Way to Learn JavaScript

https://www.amazon.com/Smarter-Way-Learn-JavaScript-technology-ebook/dp/B00H1W9I6C

loved it, not painful at all. done 2 of his books, great for getting feet wet, not an expert or autonomous but lots of exposure.

u/D3pIyWExck8mAEkb · 2 pointsr/java

Hi, I am learning Java at the moment and found the following book quite useful.

http://www.amazon.com/Java-Beginners-Guide-Herbert-Schildt/dp/0071809252/ref=cm_cr_pr_product_top

u/Sharpkloq · 2 pointsr/learnprogramming

I read a beginners book on Java. Now working my way through a more detailed C# book.

Java Book

C# Book

u/The_New_34 · 2 pointsr/learnprogramming

Java: A Beginner's Guide

For someone who does not know much about computers at ALL, this may be a bit challenging at first, as it doesn't go into much detail about downloading the JDK (if you wish to use it and not an IDE) and some issues about javac and java not working (again, this is only an issue in cmd/powershell if you're not using an IDE).

I would also recommend this html, css, javascript, and jquery bundle

The two books can also be bought individually


EDIT: Specified the downsides of the Java book a little more

u/starryeyedsky · 2 pointsr/dogecoin

Someone already suggested codeacademy, another one to check out is https://www.udemy.com/java-tutorial/.

Note: If you are looking for a teaching tool for people who have never coded before, always check to see if one of the first programs (if not the first) it has you code is a "Hello World" program (or equivalent). It is a simple program that just prints "Hello World" on the screen that is the first program most people learn to code. If the guide is starting with something more complex than "Hello World" it may not be for absolute beginners. Just something to look out for.

If you are OK paying for a book, a good book in the beginners section would be Java: A beginner's Guide from Oracle. Start with the two free sources mentioned first as the book jumps into more advance topics more quickly.

u/leapy_ · 2 pointsr/learnjava

Well, it's one year since I started my Java programmer career and I think you should start with basic and then decide what you want to do in future (there is lots of path to take).This worked for me:

  1. Get fammiliar with concepts in this book Java: A Beginner's Guide, Sixth Edition. There are basic which u will need everywhere and for me a form was really easy to follow.
  2. Try to create some basic game in console. For example I did some basic "Fallout style" adventure. Important is to try coding yourself and not copy/paste and try to finnish a project.
  3. Choose a path you wanna take. Do you want desctop app, android app or you want to work in a enterprise. Find a technologie which suit your purpose and focus on it. Don't try to learn everything, because then u will know nothing properly.
  4. Try to do something like DVD rental or anything where you will have to implement CRUD operations, use REST API and get your hands dirty with some MVC concepts.
u/maredsous10 · 2 pointsr/java

Java: A Beginner's Guide by Herbert Schildt (Author)
www.amazon.com/Java-Beginners-Guide-Herbert-Schildt/dp/0071809252/

u/R_Moony_Lupin · 2 pointsr/math

Thank you for your comment. Yep, regarding the pedagogy of LP, I have pretty much covered what you say here

>This shows that LPs can be solved in finite time, which isn't even obvious. It also introduces the essential idea behind simplex, namely that a vertex can be described combinatorially by choosing n of the k inequalities.

in a previous article. Also this book [Algorithms - Dasgupta, Papadimitriou, Vazirani] inspired me to write about LP in a more intuitive way, it has a really good introductory chapter in LP :)

u/DominikPeters · 2 pointsr/compsci

CLRS is the standard text for algorithms, but it is not obviously student-friendly. (I can't learn from it very well, and there are few exercises.) I'd recommend you take a look at this book, written by reputable authors, which is easy to read, covers interesting topics in addition to the standard core, and has tons of exercises. The book used to be available online but now McGraw Hill has told the authors to take it down. Googling "Dasgupta Algorithms" will give you a pdf either way.

[Also note the book's chapter on complexity. It provides a nice intuitive intro into NP-completeness that's somewhat light on rigour and uses non-standard definitions, but reading it first might make understanding Sipser easier.]

u/spankalee · 2 pointsr/UCSC

It's a great course and Dimitris is a very good teacher. It is pretty challenging and Dimitris expects you to keep up, so most importantly take it seriously and make sure you intuitively and analytically understand each part. Ask questions and go to office hours. Some of the techniques taught in this class are very important for use in industry.

When I took the class he used Algorithms by Dasgupta:http://www.amazon.com/Algorithms-Sanjoy-Dasgupta/dp/0073523402

There used to be a free PDF available as well.

u/rdesmond101 · 2 pointsr/writing

Ah, okay on that I agree. I thought originally you were dismissing reading entire books in general because of tools like google which gives instant access to individual bits of information.

Particularly, for algorithm design, this one I read for college. It starts out with a motivation, what is an algorithm? Why do we study them? It then gives definitions for how to measure the performance of an algorithm. With a metric established, it picks a basic process we take for granted, addition, and breaks it down to how a computer would run the algorithm that we run in our heads. Then, it introduces an alternative algorithm that actually performs better than the one we use intuitively. And this is all in the first chapter. Every paragraph builds on another, relates back to the chapter, and ultimately, the theme of the book which implores us to answer the questions: Can we solve this problem? If so, how fast? And can we do better? Dynamic programming, divide-and-conquer, linear programming are all useful tools in and of themselves, but unified they provide a coherent narrative: What kinds of problems can computers never solve? How should one approach a problem that, on the surface, seems unfamiliar? And to be fair, the insights are expressed directly. In italics. At the beginning of the textbook. But it wouldn't have much meaning unless you understood the context in which the insights related to. Anywho, this is just one example of many where reading a book in its entirety allowed me to gain a valuable skill (or in literature, a different perspective), rather than a fixed atom of knowledge.

I guess when I first read your post, it worried me when you said that the information density of most books is impractically small and that the value of most books lie in random particles dispersed throughout, rather than as a unified collection of ideas. For me, it has been the opposite: the majority of books I've read, though time consuming, have paid enormous dividends not because of the discrete particles of knowledge they dispensed (Hamlet kills Claudius), but rather because they have changed the way I look at life (what am I tasked to do by my family or society, what purpose is worth acting for?) Though it seems like you understand this already, you just don't like the fact that the author seems to advocate for undue amounts of reading because "that's how it was in my day".

u/banuday17 · 2 pointsr/java

Sure, glad I could help. It sounds like you're having some difficulties with the fundamentals of object-oriented programming. The Java tutorials are good, but they are focused on the Java specifics and don't really go into the bigger picture.

For that, I would highly recommend Agile Software Development, Principles, Patterns, and Practices by Bob C. Martin.

u/time-gear · 2 pointsr/6thForm

Projects on github is a good way to show them. And then you can talk about how to know how to use git (not worth mentioning IMO but still)

Books: https://www.amazon.co.uk/Software-Development-Principles-Patterns-Practices/dp/0135974445 is a book that outlined the SOLID principles for coding which are quite popular today. In the recommended section are some others by him as well

u/MrKurtHaeusler · 2 pointsr/software_design

Possibly one or both of Bob Martin's books.
Agile Software Development, Principles, Patterns, and Practices (comes as a Java or C# version, but many of the ideas will probably be useful if you are using an OO language) or
Clean Code

u/coderjoe · 2 pointsr/ruby

I love Ruby Koans.
If we're going back to other references for general programming and algorithmic knowledge I would also recommend:

u/sigmaseven · 2 pointsr/IAmA

Thanks for the encouraging words, they definitely help. :)

I started in a language of old called BASIC, which if anything only really taught me about code flow. The first language I began to really do anything with though was C, and today I work mostly in C++ and some other compiled languages like Java for desktop applications.

Anything that isn't a desktop application I'll generally rely on an interpreted language such as Perl. They're great for gluing software and services together, or if you just don't want the hassle of porting compiled code where the target machine can feasibly run an interpreter.

Java's a good place to start, in my opinion. You'll have direct exposure to having to using datatypes properly (such as character strings and integers) as well as have an earlier understanding of object-oriented programming, since basically everything in Java is a class/object instance. It's also C-style in syntax, which a lot of languages tend to share in common. So when you go to learn other languages like C++, D, and lots of others I'm forgetting, it'll be easier to just kind of pick them up and go.

Also I've mentioned it elsewhere in the AMA, but it's worth repeating. Pay extra attention to the hows and whys of what's happening when you're learning programming. It's really tempting to learning all the features of a language or attempting to get into more advanced topics of programming, but having an idea of why you're doing things the way they are will be key to your success. So you should put equal emphasis on not just learning Java as a language, but as a tool to express programming concepts. The Art of Computer Programming has essentially been the go-to literature since I can remember for that.

u/fatso784 · 2 pointsr/compsci

Some books on my wishlist (not sure if you're okay with math):

TAOCP

Operating System Principles

Computer and the Brain

Path to the Quantum Computer

u/saraswati00 · 2 pointsr/geek
u/CSMastermind · 2 pointsr/AskComputerScience

Senior Level Software Engineer Reading List


Read This First


  1. Mastery: The Keys to Success and Long-Term Fulfillment

    Fundamentals


  2. Patterns of Enterprise Application Architecture
  3. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
  4. Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML
  5. Systemantics: How Systems Work and Especially How They Fail
  6. Rework
  7. Writing Secure Code
  8. Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries

    Development Theory


  9. Growing Object-Oriented Software, Guided by Tests
  10. Object-Oriented Analysis and Design with Applications
  11. Introduction to Functional Programming
  12. Design Concepts in Programming Languages
  13. Code Reading: The Open Source Perspective
  14. Modern Operating Systems
  15. Extreme Programming Explained: Embrace Change
  16. The Elements of Computing Systems: Building a Modern Computer from First Principles
  17. Code: The Hidden Language of Computer Hardware and Software

    Philosophy of Programming


  18. Making Software: What Really Works, and Why We Believe It
  19. Beautiful Code: Leading Programmers Explain How They Think
  20. The Elements of Programming Style
  21. A Discipline of Programming
  22. The Practice of Programming
  23. Computer Systems: A Programmer's Perspective
  24. Object Thinking
  25. How to Solve It by Computer
  26. 97 Things Every Programmer Should Know: Collective Wisdom from the Experts

    Mentality


  27. Hackers and Painters: Big Ideas from the Computer Age
  28. The Intentional Stance
  29. Things That Make Us Smart: Defending Human Attributes In The Age Of The Machine
  30. The Back of the Napkin: Solving Problems and Selling Ideas with Pictures
  31. The Timeless Way of Building
  32. The Soul Of A New Machine
  33. WIZARDRY COMPILED
  34. YOUTH
  35. Understanding Comics: The Invisible Art

    Software Engineering Skill Sets


  36. Software Tools
  37. UML Distilled: A Brief Guide to the Standard Object Modeling Language
  38. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development
  39. Practical Parallel Programming
  40. Past, Present, Parallel: A Survey of Available Parallel Computer Systems
  41. Mastering Regular Expressions
  42. Compilers: Principles, Techniques, and Tools
  43. Computer Graphics: Principles and Practice in C
  44. Michael Abrash's Graphics Programming Black Book
  45. The Art of Deception: Controlling the Human Element of Security
  46. SOA in Practice: The Art of Distributed System Design
  47. Data Mining: Practical Machine Learning Tools and Techniques
  48. Data Crunching: Solve Everyday Problems Using Java, Python, and more.

    Design


  49. The Psychology Of Everyday Things
  50. About Face 3: The Essentials of Interaction Design
  51. Design for Hackers: Reverse Engineering Beauty
  52. The Non-Designer's Design Book

    History


  53. Micro-ISV: From Vision to Reality
  54. Death March
  55. Showstopper! the Breakneck Race to Create Windows NT and the Next Generation at Microsoft
  56. The PayPal Wars: Battles with eBay, the Media, the Mafia, and the Rest of Planet Earth
  57. The Business of Software: What Every Manager, Programmer, and Entrepreneur Must Know to Thrive and Survive in Good Times and Bad
  58. In the Beginning...was the Command Line

    Specialist Skills


  59. The Art of UNIX Programming
  60. Advanced Programming in the UNIX Environment
  61. Programming Windows
  62. Cocoa Programming for Mac OS X
  63. Starting Forth: An Introduction to the Forth Language and Operating System for Beginners and Professionals
  64. lex & yacc
  65. The TCP/IP Guide: A Comprehensive, Illustrated Internet Protocols Reference
  66. C Programming Language
  67. No Bugs!: Delivering Error Free Code in C and C++
  68. Modern C++ Design: Generic Programming and Design Patterns Applied
  69. Agile Principles, Patterns, and Practices in C#
  70. Pragmatic Unit Testing in C# with NUnit

    DevOps Reading List


  71. Time Management for System Administrators: Stop Working Late and Start Working Smart
  72. The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services
  73. The Practice of System and Network Administration: DevOps and other Best Practices for Enterprise IT
  74. Effective DevOps: Building a Culture of Collaboration, Affinity, and Tooling at Scale
  75. DevOps: A Software Architect's Perspective
  76. The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations
  77. Site Reliability Engineering: How Google Runs Production Systems
  78. Cloud Native Java: Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry
  79. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
  80. Migrating Large-Scale Services to the Cloud
u/burntsushi · 2 pointsr/linux

> Make a document on how to properly document code.

They've existed for a long time. Rob Pike's Notes on Programming in C is an excellent quick start. His book (with Brian Kernighan) The Practice of Programming gives a lot more detail. (And goes beyond just commenting/style.)

u/Copernikepler · 2 pointsr/Physics

Ignore the people who are stating that learning c++ is some daunting, difficult task. It isn't. If you have learned mathematics, you will be able to learn c++. Both are languages used to convey reasoning. Mathematics and C++ both have grammar to follow and rules for turning some statement into another -- you won't find things very foreign if you look at it from this perspective.

Also, you should avoid videos and such, and just go start writing and compiling C++. You need a good starting point for the language of course, and the core material usually recommended is The C++ Programming Language by Bjarne Stroustrup.

The rest of your reading material should be reading well formed c++ code. Read the source code of popular, well documented projects. Read the Boost libraries, read the source of Qt, read as much C++ as you can get your hands on. Try to understand it. If you find something you don't understand, go look it up. Ask other programmers about it.

Take things in small chunks and if you get overwhelmed just take a step back a bit and write something simple that you can grasp. Create small programming problems for yourself to solve and play with them -- do the same things you did while you learned mathematics.

u/prince_nerd · 2 pointsr/AskReddit

Once you finish that, you will be ready to program in C++. The next step is to get a deep understanding of C++. For that Bjarne Stroustrup's "The C++ Programming Language" is the best. These are the only 2 books you will need... a quick-start book and a get-deep-understanding book.

Of course, after reading those 2, there are plenty of other good books that you can read to hone your C++ skills, learn more about STLs, etc.

u/DutchmanDavid · 2 pointsr/gamedev

Read books. It might be boring, but a lot more informational than watching a youtube video.

If you already know how to program in another (preferably OOP) language there's The C++ Programming Language or C++ Primer if you want to learn C++11 (not to be confused with C++ Primer Plus, which is a different book 'series')

If you don't know how to program and you want to learn C++ for game development there's Beginning C++ Game Programming, which starts at the beginning (variables are one of the first things explained). After that book you should read up Introduction to Algorithms to make sure you're not writing horrible inefficient programs. Then there's Design Patterns: Elements of Reusable Object-Oriented Software to teach you more about certain patterns used in programs design (needed when using Ogre3D for example. Ogre3D was 90% magic to me until I read about Design Patterns. :p As alternative to DP:EoROOS there's Head First Design Patterns, but it's Java-centric which is a whole other beast than C++.

After those books there's this Stackoverflow thread. Read the first answer (the gigantic list of books). The thread used to be a ton of comments (with the most votes comments on top), but all anwers got copied to the first comment, so it's all sorted on votes. Code Complete (2nd edition) was the most upvoted one, The Pragmatic Programmer was the 2nd most upvoted one, etc.

Then there's this Stackoverflow thread, which is more C++ centric.

I hope this helps :)

u/reventlov · 2 pointsr/programming

First, be prepared to write code that sucks and is unmaintainable for a while. (This could be months or years.)

If you only know Java, then you'll need some C concepts. In particular, you need to become familiar with pointer arithmetic, avoiding buffer overruns, and manual memory management. (C++ has ways (RAII) to make manual memory management less error-prone, but you still need to understand what's going on.)

To learn the basics of the language, read The C++ Programming Language, Special Edition, by Bjarne Stroustrup.

Read a lot of things by Herb Sutter and Andrei Alexandrescu. I particularly recommend Modern C++ Design and Exceptional C++; I'm sure others in this thread can give you some good suggestions.

Finally, start writing code, and get it critically reviewed by someone who really knows C++. (I've known 2 or 3 such people in my career; they exist but are the exception, not the rule. Look for people who can explain all the things I listed, and more.)

(Edited to add The C++ Programming Language.)

u/newocean · 2 pointsr/cpp_questions

It will get tougher just stick with it. I just pulled my copy out to figure about where you were. Another book I recommend owning is this one:

http://www.amazon.com/The-Standard-Library-Tutorial-Reference/dp/0321623215/ref=dp_ob_title_bk

Actually if you PM me, I'll give you my email or skype so you can ask questions.

u/zzyzzyxx · 2 pointsr/learnprogramming

> I'm really only showing them the deep end

Fair enough.

> const correctness has less functional impact on what a program does than functions/arrays/pointers/OOP/many-other-concepts

True, it doesn't affect the behavior of the code. But code that works is not inherently good code. It's hard to write good code in C++ and I see a lot of bad C++ come through r/learnprogramming so I am of the opinion that best practices should be taught early. I can understand your argument with opportunity cost though.

Perhaps it's sufficient to say at the outset "if you don't expect something to change, mark it const; I'll explain further in the future". Then in your lectures you can mention it in passing, e.g. "This function should not modify this parameter so I am making it const". It's easier to remove a too-restrictive const than it is to insert a necessary one later. You can expose them to consistently good const usage before you explain in detail.

> I may ask for your feedback on that lecture specifically when I do it, if you're willing to participate.

Absolutely. Just let me know when.

> Movie editing is the problem

Oh, sorry; I misunderstood. Lightworks seems to be the best free editor comparable to Premiere.

> Any suggestions for good resources

In my opinion, C++ is always best learned from a book. The two that I would recommend right now are C++ Primer 5th ed and The C++ Standard Library 2nd ed. Though you will be able to skip around to the C++11 parts, both would also be good for your students.

u/zzing · 2 pointsr/cpp

One possibility (available on the 9th): http://www.amazon.com/The-Standard-Library-Tutorial-Reference/dp/0321623215/ref=dp_ob_title_bk

The only potential problem is that the author had an interview recently that put serious question on the quality of the work done. So I would wait and see. The present book is really good though.

u/exoticmatter · 2 pointsr/learnprogramming

If you are asking about the C++ Standard Library, the answer is "read a book" (or several books), such as this excellent one.

u/silverforest · 2 pointsr/gamedev

Two book suggestions:

u/YuleTideCamel · 2 pointsr/learnprogramming

\>how long this will all take?

​

That depends on your experience and skill level at programming in general and Javascript.

​

My advice would be the following:

  • Focus on learning JavaScript the language. Regardless of framework, having a very solid understanding of core js concepts is key. I'm a big fan of the book effective javascript - https://www.amazon.com/Effective-JavaScript-Specific-Software-Development/dp/0321812182/
  • Understand core concepts of web development, server side vs client side.
  • Understand nodejs itself as a platform.

    ​

    After this you'll have a good foundation to dig into Angular, React, Ember etc. However, each one of those is a huge undertaking. Aside from reading books and watching videos, you absolutely have to code. So build as many projects. Don't get hung up on building a "real" project. I would clone as many web applications as you can think of. Build a reddit clone, build a facebook clone, build a snapchat api) clone, build as many things as you can big and small . Don't worry about making it new and cool, it just has to allow you to program.
u/noman_land · 2 pointsr/javascript

Take a look at the book Effective Javascript. It's a really excellent book that deep dives into specific examples and what to look out for.

Secondly, check out some of the tutorials on nodeschool.io. They get into some really neat and important Javascript things.

Thirdly, write some backend Javascript code in nodejs so you can use the skills you already have but apply them to backend concepts. Heroku has some really nice tutorials that will get you writing server code in just a few minutes. https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction.

Fourthly, use one or more of the popular frontend frameworks to build a simple Todo app. In fact, if you have the time, build the same Todo app in a few different frameworks, so you get an idea of how they work.

Also, when interviewing, just be honest. Tell them you have a number of years of experience but that you've worked for organizations that preferred quick and dirty over perfect. You can parlay that into a positive by showing how learned to get stuff done quickly without spending too much time on small details.

u/randmaniac · 2 pointsr/programming

I found Effecive JavaScipt [1] to be the better and more up to date resource when I had to dive into javascript about 2 or 3 weeks ago.

[1] http://www.amazon.com/Effective-JavaScript-Specific-Software-Development/dp/0321812182

u/deathbysniper · 2 pointsr/javascript

My coworkers and I have been slowly going through this book for a while now and we've all learned a lot.

u/DavesNotThere · 2 pointsr/Random_Acts_Of_Amazon
u/jtbrown · 2 pointsr/ObjectiveC

The Stanford course is a great way to learn if you're into lectures.

If you prefer workshops and have the time and money to invest, you should go to the Big Nerd Ranch Beginning iOS Bootcamp. (Here's my extended writeup about it - in summary, it's a great way to learn since you get live instruction.)

Or if you like books, you can try Objective-C Programming, and follow that up with iOS Programming: The Big Nerd Ranch Guide.

Decide which learning style you prefer, then jump in. :)

u/TheMiamiWhale · 2 pointsr/iOSProgramming

Ray Wenderlich's site has great tutorials. I'd strongly encourage you to work through these books - they should give you a pretty strong foundation:

  • Programming in Objective-C - this will also give you a primer/background in C language features as well.

  • BNR's Objective-C Programming - great overview of the language

  • BNR's iOS Programming

    Ray Wenderlich also has some Swift tutorials but if you are just starting out I'd focus more on Objective-C for now as it will be very useful to know when looking at libraries that aren't ported to Swift.
u/codexjourneys · 2 pointsr/learnprogramming

Get this book from Amazon:

Objective-C Programming: The Big Nerd Ranch Guide
http://www.amazon.com/Objective-C-Programming-Ranch-Edition-Guides/dp/032194206X

It assumes zero knowledge and is the best programming book I ever read. (It's the one that got me started programming.) Then you can move on to their iOS Programming book. You might get stuck in that book. If so, go to Ray Wenderlich's tutorial site.

Have fun!

u/Pinkman5545 · 2 pointsr/learnprogramming

I'd learn objective-c first since a lot of iOS apps are still written in that. Swift is a bit easier to learn so once you get objective-c down you could move to that. There are lots of good tutorials online. Udemy's $19 course is pretty good. For books, I'd start with The Big Nerd Ranch.

u/brcosm · 2 pointsr/cscareerquestions

Steve Yegge's 5 Essential Areas

When I was preparing to interview I broke up the studying into the 5 areas mentioned in Steve's post. From my experience, the two most critical things are:

  • Writing reasonable code on demand (like on the whiteboard)
  • Knowing the core data structures (including time and space complexity)

    If you have never written code on a whiteboard, you need to practice -- it isn't natural and will almost certainly trip you up. For the data structures, try explaining something like a heap or a map a friend who has no background in CS. It will get you comfortable talking about that kind of stuff and also help cement your knowledge. This book is excellent as a resource.
u/Iwishiknewwhatiknew · 2 pointsr/cscareerquestions

It's time complexity of algorithms. It's asking for big O, which is worst possible time your algorithm would take given a data input, usually n being the size of the array/list or whatever.

Hash tables are 0(1) because true hash tables uses a function to map 1:1 for all given inputs. For fun(y) => x, every x is generated by a unique y. If it's not a true hash table (ie not a 1:1 map), then you use chaining or bucketing. Chaining is guaranteed 0(n) time and uses no extra space and bucketing is guaranteed 0(n+t) where t is the largest bucket but requires extra space (tradeoffs!).

It's important because it's efficiency. You can program things 1000 ways. Given an input of 10 items, algorithm A (lets say runs in O(n)) and algorithm b (runs in O(n!)) may perform in nearly the same time and produce the same output. But given a list of 100000 items, algorithm B would take years to complete the task, when algorithm A would do it in ms.

Although I'm just about to graduate and don't have a real job yet, I recommend picking up something like this. You can find a pdf with minimal effort. The first few chapters really nail into it well.

u/gwevidence · 2 pointsr/learnprogramming

So lots of folks here have mentioned algorithms. If you're someone who likes to read hard copy books then check this one out - The Algorithm Design manual. An all round good book, even for beginners. Of course, it can be had in ebook format too.

u/sgwizdak · 2 pointsr/cscareerquestions

I'd read through this book:

http://www.amazon.com/Algorithm-Design-Manual-Steve-Skiena/dp/0387948600

(I've noticed pdfs of that books on some .edu's in .cn, but I'm not going to link those here.) Be prepared for tree traversal type questions.

u/kitsune · 2 pointsr/programming

Some books I enjoyed:

The Algorithm Design Manual by Steve S. Skiena, $61.15

Real Time Rendering, 3rd. Edition by Tomas Akenine-Moller, Eric Haines, Natty Hoffman, $71.20

Structure and Interpretation of Computer Programs, by Hal Abelson's, Jerry Sussman and Julie Sussman, Free

Clean Code by Robert C. Martin, $37.85

u/jackmott · 2 pointsr/compsci

Yeah so more of the kind of work this guy is doing:
https://www.youtube.com/watch?v=uEFrE6cgVNY

and greg wilson has a book that reviews this idea:
http://www.amazon.com/Making-Software-Really-Works-Believe/dp/0596808321

u/LyndonArmitage · 1 pointr/java
  1. I use IntelliJ at work and home, not just for Java but for a lot of other things, it has the fastest and best intelligent auto complete I have seen in an IDE and supports a whole tonne of frameworks and programming languages, it's also got some kickass keyboard shortcuts and a nice dark skin.
    However all the main IDEs are good, those are Eclipse, Netbeans and IntelliJ (as far as I am aware). At university you will probably be learning with Eclipse, BlueJ (which I have never used, but is supposed to be educational) or maybe even notepad. If they give you a choice I'd use Eclipse to learn with since it is used by a lot of companies and open source projects.

  2. One thing to watch out for is String comparison using the == operator. The == operator in Java compares memory address and not content of the strings, a quick google search turns up this blog post with some details on Strings in Java. Basically you should use string1.equals(string2) when comparing strings in Java.

  3. Nab a book from your university library or buy one on Amazon/The Book Depository.
    I taught myself it following various tutorials online but the books teach you better practices than those most of the time and are more in depth. Java a Beginners Guide seems highly rated on Amazon and has been kept up to date. When I was at university I saw a few copies of Thinking in Java around but it's a tad out of date now, Head First Java might also be worth a look.
    The videos I used to learn Java were a combination of thenewboston videos (these don't encourage good practices but show a basic way of getting started) and some Java games programming related videos by thecodinguniverse.
    Once you have the basics of Java down, might I also suggest completing the challenges on /r/dailyprogrammer to help get you more comfortable with it.
u/drummondaw · 1 pointr/java

I'm in the same boat as you. I'm currently working through a book called Java: A Beginner's Guide Sixth Edition. I chose this book because it uses the latest version of Java, which I think is important in some respects. Older books may have the same information initially (loops, datatypes, etc. rarely change), but as you delve deeper there are certain aspects of the language that improves over time and makes your life easier as a developer.

Choosing the right author is essential because they're basically your professor throughout the learning process. Someone suggested www.thenewboston.com and the vast majority of developers on this site laugh at even the mention of this resource. In other words, do your homework and ensure you're learning from a respected individual.

After having a basic understanding of a programming language your next step should be to choose a personal project slightly beyond the skill level you currently have. Doing research, solving problems/bugs and finishing something enhances your learning like you wouldn't believe. I've been reading programming books for many years and the times when I'd simply read a book in its entirety and then try to build something always showed me that my retention wasn't very strong. When I took the time to pause and use what I had learned throughout segments of the book I learned a lot more and my retention was extremely high.

Using what I've said above, you can pick pretty much any programming language and apply this learning style. I have tried both online classes and books and have found books to be the best method for myself. With online classes I've found myself spending time watching way too many videos than actually writing code.

u/vegantealover · 1 pointr/learnprogramming

I recommend Java Beginners Guide by Herbert Schildt rather than head first java, for those that don't like lame jokes and just want to get to the point.

u/dmazzoni · 1 pointr/learnprogramming

OK, you could start with a book like this:

http://www.amazon.com/Java-Beginners-Guide-Herbert-Schildt/dp/0071809252/

I'd highly encourage you to actually do the exercises, though. Programming is all about doing, not reading. You should spend roughly 10 hours programming for every 1 hour of reading.

Even if you only make it through one chapter, it will get you in the right mindset.

Alternatively, if you haven't already learned HTML and you want to learn something different, but super useful, try learning HTML (and CSS) to make a simple website. Note that HTML is not programming, but it does get you used to the idea of writing syntax for a computer to parse, and trying to figure out what went wrong when it doesn't do what you intended. Plus, HTML is used all over the place so it's incredibly useful to know. If you know a little bit, learn more - try some more advanced CSS.

u/Zajecarsko · 1 pointr/serbia

Iskreno, poceo sam da je citam i po meni je previse neozbiljna. Moze li ova? Cini mi se da je dobra.

Hvala.

u/wisam · 1 pointr/learnprogramming

Java, A Beginner's Guide. is a well-paced book that's not huge (about 700 pages).

Java, The Complete Reference. by the same author of the above book is, as the name suggests, a huge comprehensive reference (about 1500 pages). I wouldn't use it to learn the basics, but would use it later as a reference.

Introduction to Java Programming, Comprehensive Version. is a slow-paced huge book (more than 1500 pages) that will benefit a beginner a lot.

Now if you are in a hurry and you need to go through the basic s quickly and possibly miss some details, I would recommend Think Java. It's a small (about 300 pages) free fast-paced book that will get you hooked quickly.

u/Zveir · 1 pointr/UMD

Since you're starting a Java programming course in two weeks, I'd recommend this one.

https://www.amazon.com/gp/product/0071809252/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1

It's one of the books I own. Admittedly this is not the book I would normally give to a complete novice in programming, but I think it's the best for the situation. It's a pretty fat book and full of knowledge, but it assumes the reader has some sort of technical background. It doesn't do much to help you visualize it in other ways. However it gets straight to the point, is fairly clear, and is ordered well. If you can understand the material in the first 3 chapters before the start of your class I think you will be very well off.

u/me2i81 · 1 pointr/compsci

A few more to consider:
A recent book that looks like fun is the Nature of Computation.
Sipser's book on theory of computation is good.
Algorithms by Dasgupta, Papadimitriou, and Vazirani is a very accessible algorithms book, as is Skiena. CLRS is a good reference, but dull as a read.
Comprehensive Mathematics for Computer Scientists volumes one and two might be interesting to look at.

u/yokidiko · 1 pointr/OMSCS

The suggested textbook. Authors' initials. This one (don't know if correct edition). https://www.amazon.com/Algorithms-Sanjoy-Dasgupta/dp/0073523402

u/roboticc · 1 pointr/AskComputerScience

At last, a question in my domain! Wikipedia actually provides a very good beginner's introduction to computational complexity theory. You should start at O(n) notation (big-O notation) and go from there to the articles on computational complexity.

There are also wonderful books like Dasgupta, Papadimitriou, and Vazirani's textbook "Algorithms". The latter third of the book will teach you about computational complexity theory, but the first two-thirds will teach you much of what you need to know to understand it. http://www.amazon.com/Algorithms-Sanjoy-Dasgupta/dp/0073523402

If you have any questions as you read feel free to PM me directly.

u/dietsnappleman · 1 pointr/cscareerquestions

The most common textbook is this:
http://amzn.com/0262033844

I learned from this:
http://amzn.com/0073523402

Can't say anything about Free Code Camp, but I will say that work experience at the best company that will take you is likely going to trump anything you do on the side OR a master's. You should, ofc, learn as aggressively as possible regardless.

u/htglinj · 1 pointr/dotnet

Robert C. Martin, a.k.a. Uncle Bob, initially wrote a book for Java (2002) before the C# (2006) book was written. The only version he seems to maintain, or at least I can find links for on GitHub, is Java.

The book has helped me understand concepts, and most consider Uncle Bob one of the essential authors of computer programming. The C# book has code throughout, especially Section 4, but I cannot find a downloadable source. You'd have to input by hand, page-by-page if you wanted the complete system.

u/njw1108 · 1 pointr/agile

https://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445 could be a good start.

and Uncle Bob's blog has a lot of insightful thoughts as well https://blog.cleancoder.com/

u/CreeperShift · 1 pointr/learnprogramming

I recently asked my prof the same thing, and he recommended this:
https://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445

A little older but apparently still very good. Haven't gotten to it yet tho so I can't really tell you more.

u/dencan · 1 pointr/sweden

>[1] http://www.amazon.com/dp/0135974445/

Det där var ju en ganska tvivelaktig källa. Eller så missade jag en ganska stor bit av agil utveckling på högskolan.

u/dumb_and_dumber · 1 pointr/sysadmin

All I know is anyone in the computer science, computer engineering, networking, etc. should attempt to get their hands on the Art of Computer Programming.

Link to books

u/fellipebl · 1 pointr/compsci

As far as I know to understand how a computer works it's also important to understand the algorithms running on that.

I'd suggest you to read something light like this (http://www.cse.ohio-state.edu/~gurari/theory-bk/theory-bk.html) and after that read things like Knuth (http://www.amazon.com/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025/ref=pd_sim_b_2/191-9538329-5615213) (http://www.amazon.com/Art-Computer-Programming-Volumes-Boxed/dp/0201485419).

MIT's introduction to CS is also a nice begin (http://academicearth.org/courses/introduction-to-computer-science-and-programming)

u/AnthonyJBentley · 1 pointr/linux

A lot of Kernighan’s (co‐authored) books age surprisingly well. It’s a real testament to his writing style that they are still relevant today despite examples tending to be in PL/I or Fortran.

u/oridb · 1 pointr/compsci

I'd strongly recommend The Practice of Programming. It's about structuring code cleanly and readably in general. It's something I wish most programmers would read.

https://www.amazon.com/Practice-Programming-Addison-Wesley-Professional-Computing/dp/020161586X

It's full of great advice, and is a fairly light read.

u/HeterosexualMail · 1 pointr/golang

Sometimes there are language specific ideas there, but in general those are much more general. This is older, but still very good. It's also by Kernighan and Pike, so the ideals there are certainly reflected somewhat in Go.

https://www.amazon.com/Practice-Programming-Addison-Wesley-Professional-Computing/dp/020161586X/

u/case-o-nuts · 1 pointr/compsci

I highly recommend The Practice of Programming as a great beginner's book on how to look at writing programs.

But mostly, write code, and read other's good code. Since I mostly work in the C world, I'd suggest the Lua interpreter source code and the Plan 9 source code as examples.

u/Truth_Be_Told · 1 pointr/C_Programming

First note that Career/Job/Market is quite different from Knowledge/Intellectual satisfaction. So you have to keep "earning money" separate from "gaining knowledge" but do both parallely. If you are one of the lucky few who has both aligned in a particular job, you have got it made. Mostly that is never the case and hence you have to work on your Motivation/Enthusiasm and keep hammering away at the difficult subjects. There are no shortcuts :-)

I prefer Books to the Internet for study since they are more coherent and less distracting, allowing you to focus better on a subject. Unless newer editions are reqd. buy used/older editions to save money and build a large library. So here is a selection from my library (in no particular order);

u/Krissam · 1 pointr/learnprogramming

One thing I cannot recommend a lot is, buy a book on whichever language you'll start out with. If that is C++ I have this one: http://www.amazon.com/C-Programming-Language-Special/dp/0201700735/ and I like it, granted I don't have much to compare it to other than a Java book from school, which is terrible in comparison.

Also, C++ isn't a bad place to start, although I would say it's a hard place to start, if you want something a bit easier, I'd recommend Python (don't know it myself, but I see it recommended by others all the time), Java or C#.

u/zyax · 1 pointr/learnprogramming

I would recommend saving the money and learn from books. As said before most employers don't care about certifications and if they do, you probably don't want to work there.

The C++ Programming Language is written by the inventor of C++ Bjarne Stroustrup and arguably the best introductary book out there.

If you already know core programming principles by heart i would recommend Accelerated C++ .

u/jotux · 1 pointr/programming
u/quanticle · 1 pointr/programming

>Java and C# are retard proof in that if you screw up, you get a descriptive error message and possibly the line it occurred on. If you screw up in C or C++, you get a magical crash and no information other than 'oh there was an access violation.' And it won't say 'access violation.' It will just give you an error code. Without memory management, you have a lot less to worry about and virtually no chance of your program continuing in an inconsistent state and producing completely incorrect results (which you may not know are incorrect).

How does the fact that C++ gives less descriptive error messages automatically make C++ programmers better? One's ability to debug past vague error messages and confusing language features says nothing about one's ability to write efficient and maintainable code. In fact, it might say exactly the opposite - using a tool that slows you down with vague errors and confusing features when better tools exist means that you'll get beaten to market by someone who doesn't have debug arcane error codes and undetected access errors.

>You won't find anything similar to this in Java or really any other language. If you come across an object you don't know about in Java, what do you do? You search a reference for information on the object. If you come across some syntax you don't understand in C++, what do you do? You can't very well put that line of code into Google and you have no idea what the term for it is.

Well, I'd look it up in the index of The C++ Programming Language, but I take your point. However, I fail to see how this is an advantage that C++ has over Java. Confusing syntax is something to be generally avoided.

u/unshift · 1 pointr/programming

can't go wrong with K&R C to learn the low level stuff (pointers) first, then The C++ Programming Language to learn the rest

u/balefrost · 1 pointr/AskProgramming

> How the heck am I supposed to learn STL, when and how to use it?

Books are good! They can cover the material more efficiently than video can, and it's easy to adapt if the material is being covered too quickly or too slowly. I don't have a personal recommendation, but a quick Amazon search came up with The C++ Standard Library: A Tutorial and Reference (2nd Edition) which seems to be well-regarded. Too expensive? A used copy of the 1st edition is only a few bucks.

u/septemfoliate · 1 pointr/cpp_questions

Consider Josuttis' book for coverage of the Standard Library. I was pleased with the first edition, and I would think that the second edition is just as good.

u/aaronclong · 1 pointr/cpp

I am a little offended by your comment. It is very elitist and an attitude that is contributing to the slow and painful death of this language.

>If your into templates , and you can't find anything challenging, its time to start saving up those pennies and buy The C++ Standard Library , else your going to learn crap. Most folks buy it as a reference. I don't get contracts and you won't catch me without it. No money , no honey - and no jobs

u/ruskeeblue · 1 pointr/cpp

If your into templates , and you can't find anything challenging, its time to start saving up those pennies and buy The C++ Standard Library , else your going to learn crap. Most folks buy it as a reference. I don't get contracts and you won't catch me without it. No money , no honey - and no jobs

u/Chronic8888 · 1 pointr/javascript

On this front... do everything you can on node school and on a somewhat unrelated note buy/download this book

u/automathematics · 1 pointr/javascript

Highly agree. Buy a kindle and read anything people you trust recommend.

I would recommend one javascript specific book, actually: http://www.amazon.com/Effective-JavaScript-Specific-Software-Development/dp/0321812182/ref=sr_1_1?ie=UTF8&qid=1414608930&sr=8-1&keywords=Effective+JavaScript%3A+68+Specific+Ways+to+Harness+the+Power..

I've been doing this a long time and there's still some stuff in there for me to learn every time I flip through it.

u/codevil · 1 pointr/iOSProgramming

The Big Nerd Ranch Guides for Objective C and iOS Programming are just about the best books for absolute beginners, I've found. I had programming experience in Java and Android apps prior to working on iOS, but read the two books anyway (online tutorials are the faster way to go) just to see if I could pick up something in-depth, and I did.

http://www.amazon.com/Objective-C-Programming-Ranch-Edition-Guides/dp/032194206X/ref=sr_sp-atf_title_1_3?ie=UTF8&qid=1408323435&sr=8-3&keywords=big+nerd+ranch+ios

http://www.amazon.com/iOS-Programming-Ranch-Edition-Guides/dp/0321942051/ref=sr_sp-atf_title_1_1?ie=UTF8&qid=1408323435&sr=8-1&keywords=big+nerd+ranch+ios

u/Zarro_Boogs · 1 pointr/learnprogramming

As the Big Nerd Ranch Objective-C Programming book so eloquently put it:
> The life of a programmer is mostly a never-ending struggle. Solving problems in an always-changing technical landscape means that programmers are always learning new things. In this case, “learning new things” is a euphemism for “battling against our own ignorance.” Even if a programmer is working with a familiar technology, sometimes the software we create is so complex that simply understanding what’s going wrong can often take an entire day.

>If you write code, you will struggle. Most professional programmers learn to struggle hour after hour, day after day, without getting (too) frustrated. This is another skill that will serve you well.

u/linkrift · 1 pointr/iOSProgramming

Can't go wrong with the Big Nerd Ranch. That'll get you going on obj-c and a simple starter app. Their iOS specific book is great if you don't mind translating some of the out of date stuff.

u/efroum · 1 pointr/IAmA

If you're just starting, I'd suggest Big Nerd Ranch's Objective-C Programming. http://www.amazon.com/gp/product/032194206X?ie=UTF8&at=&force-full-site=1&ref_=aw_bottom_links

u/lorpus_the_porpus · 1 pointr/learnprogramming

While it's not purely a data structures book (and may be a bit too close to a textbook for you), The Algorithm Design Manual is hands down the best Data Structures/Algorithm book I've seen.

It does a great job explaining the concepts and has some very helpful examples. If you're interviewing, it also has several exercises and interview questions for each topic.

u/clownshoesrock · 1 pointr/programming

I've had correspondence with the author before. He's a really good guy. If this is more than just a simple curiosity, then man up and buy the book.

http://www.amazon.com/gp/offer-listing/0387948600/ref=dp_olp_used?ie=UTF8&condition=used

u/vfaronov · 1 pointr/webdev
u/jms_nh · 1 pointr/programming

Article doesn't tell you how, it's more like a handful of thoughts on how to do so, without any real data (as the author admits)

>But I think you should take more away than a handful of application-wide metrics. You should take away a preference for statistical and empirical consideration. Figure out how to quantify trends you observe and form hypotheses about how they impact code quality. Then do your best to measure them in terms of outcomes with the application. We lack a laboratory and we lack non-proprietary data, but that doesn’t stop us from taking the lessons of the scientific method and applying them as best we can.

Someone has already done this. Read chapters 8, 9, and 23 of Oram and Wilson's Making Software

u/milkeater · 1 pointr/ReverseEngineering

I think most is kind of a rough statement. Granted there were some truly gifted people in the 70's that rocked our world.

I think we have a LOT of research papers that we sift through and the legacy papers tend to stay highlighted in time. I can imagine if you sifted through everything that existed back then, you may be saying something similar.

I've found a few great ones and if you are heavy into software engineering, you may share the enthusiasm towards a book that came out several years ago: Greg Wilson - Making Software: What Works and Why we Believe it

He also has a talk where he references some of those papers: Greg Wilson talk

He comes off strong, but he backs it with research which I appreciate. It's more about bringing data to the table if you have something you'd like to discuss. Somewhat heavy handed, but there are good papers that I've read referenced there.

The continual evaluation of Conways law and it's research still holding true today is something that I continually enjoy (Although originating from a 1967 study reinforcing your point of seminal papers from that era)

u/FW190 · 1 pointr/AskReddit
u/Rubdix · 1 pointr/cpp

I'd recommend this in lieu of any shortcuts. C++ is more complex than Game Maker. What you're asking for is something that you can cobble together as you go along, when in reality you have to have a pretty firm understanding of the language as a whole to make anything of substance.

u/snerp · 1 pointr/programming

Huh. After reading this thread, I'm pretty happy that Stack Overflow did not exist when I started programming in the early 2000s. All I found were sketchy pay-for-answers sites, which I did not trust (I was also a broke 13 year old), so I was forced to go buy a giant book on C++ and read it all the way through. this one

That gave me a great base of patterns to work with and I was able to not pay any attention in college because I already learned most of the material.

I do love Stack Overflow for shit like "How do I fix this obscure OpenGL error?" though, it has become an irreplaceable tool in my toolset.

u/Medicalizawhat · 1 pointr/learnprogramming

Try not to just accept the bits you don't understand. If you have code in your app that you don't understand you will run into problems debugging it eventually, and that process could be very painful. One tried and true method for understanding difficult code is to modify small pieces of it and see what the result is. Another good technique is to add lots of log statements so you can trace the code as it executes. Be sure to write descriptive log messages so you can tell what's going on.

I've been learning Android recently and understand how difficult it is getting started. Android programming is totally different to normal programming and it really helps to understand a bit about the Android system, it's APIs and the design philosophy that underpins it all. I would definetly recommend reading a book or two to help get your head around it. Two books I found useful are: The Busy Coders Guide to Android Development and Professional Android 4 Application Development.

And the most importat thing of all is persistance, stick with it!

u/omniuni · 1 pointr/learnprogramming

Lots of good advice here. For a book, I recommend the books by Reto Meier, Professional Android 4 Application Development. Google thought he was good enough to teach their Udacity course, so that's good enough for me. Plus, they're good books anyway.

Speaking of Udacity, you can watch all the lectures for free, which includes a demanding, but ultimately thorough Android development course.

u/bilateralconfusion · 1 pointr/androiddev

Buy and read this book. When you've finished reading it, read it again.
http://www.amazon.com/Professional-Android-Application-Development-Guides/dp/1118102274/

u/trefy · 1 pointr/Android

Sorry for the slow answer, I've been busy.
It is very hard to give a specific answer, it is a very vague question and a very large topic.
A couple of things come to mind though :
-First a rant, sorry but it is necessary. You will (or have) read everywhere that fragmentation makes developing for Android a nightmare. Total bullshit and the landmark of shitty fanboys that declare themselves journalists. You will have to decide for a lower version for your app. If your are only doing it for fun, 4.0 is more than enough. If not 2.2 allows you to score all the market. Target the last version & do your homework, all the tools are here to deliver a good experience to all these versions while using the last improvements (official compatibility library, actionbar sherlock, ...).
-Please don't buy a dozen of books. That's just a waste of money. If you have enough OOP knowledge, you don't even need one. If not, Reto Meier wrote one (http://www.amazon.com/books/dp/1118102274). It is recent enough (it is in the 4+ world) and since he is a developer advocate for Android at Google, you will find way less mistakes than from a random author.
-While we are on the topic, stackoverflow can be helpful BUT 90% of the answers are just plain terrible. If you use this website, always keep this in mind and try to be critical of the answers.
-developer.android.com should always be your first stop. There are introduction classes, and documentation for almost all Android related topics.
-If you want to keep informed about what is happening in the Android dev community (libraries, tools, apps, ...), http://www.youtube.com/user/androiddevelopers has an official youtube page and they even have a weekly video with the news. If you want more, circling the Googlers that work on Android + the biggest members of the open source community might be a good idea.
-Even if you suck at or don't care about design, you should still read the guidelines on the android dev website at least once. Keeping these in mind is really helpful when working on UI related problems.

u/TheePumpkinSpice · 1 pointr/explainlikeimfive

I'm studying up on how to create Android apps at the moment. Would you be more inclined to learning how to develop Android applications or iOS applications? If you're interested in learning to program Android apps, the Android application framework includes native Java libraries and thus conventions so you would be required to get comfortable with the Java programming language. The book I'm currently reading is a Wrox publication titled [Professional Android 4 Application Development](http://www.amazon.com/Professional-Android-4-Application-Development/dp/1118102274/ref=sr_1_1?ie=UTF8&qid=1380856547&sr=8-1&keywords=professional+android+4+application+development
).

As far as iOS applications go, I know that the programming language required is Objective C and I'm certain you would need a Mac to develop it on; although you CAN develop using a Mac virtual operating system, the performance is a huge drag. Good luck!

u/dstaley · 1 pointr/Android

I'd pick up a copy of Learn Java for Android Development. It's great for any level of programming knowledge, and it's specifically focused on Android development. However, this won't make you a great Android developer. After this book, I'd recommend getting Professional Android 4 Application Development. It's written by Reto Meier, the tech lead for the Android Developer Relations team at Google, and is pretty detailed without being overwhelming.

u/lacronicus · 1 pointr/androiddev

http://www.amazon.com/Professional-Android-Application-Development-Guides/dp/1118102274

pick it up for 30 bucks, read it, do the stuff. It'll get you where you need to be for most of the things you'd want to do on android.

u/FunctionPlastic · 1 pointr/AndroidGaming

I recommend Professional Android 4 Development. But why ask a non-dev sub a dev question? You would definitely get a better answer there.

Oh and since the move to Android Studio - you want to follow Google guides on setting up your environment, since the change happened recently and all books are outdated in this respect. So set up a basic environment and start coding - the book is relevant from that point on.

Really gives a great description of how all the different components of the system fit in together - the kernel, drivers, APIs, runtime/VM, etc.

u/unleashmysoul · 1 pointr/androiddev

The developer docs are a great place to learn the 'basic stuff' and terms like 'Bundle'.
I can recommend you this book: http://www.amazon.com/gp/aw/d/1118102274/ref=mp_s_a_1_1?qid=1370377881&sr=8-1&pi=SL75

Written by Reto Meier, a Google Android Advocate in the Android Relationship Team.

u/OmegaNaughtEquals1 · 1 pointr/cpp_questions

This is popular on Amazon, but is not on the Definitive List.

u/TiGeRpro · 1 pointr/gamedev

Any reason not to get the Fourth Edition of the book?

u/Madamin_Z · 1 pointr/Cplusplus

I recommend to you this book

u/JulianCienfuegos · 1 pointr/cpp_questions

I started with beginning C++ through game programming. The games are simple, its pretty much just a book about basic c++ syntax. https://www.amazon.com/Beginning-C-Through-Game-Programming/dp/1305109910 . I'm not sure, but a Stroustrup book might be intimidating if you don't know anything about coding.

u/MakerTech · 1 pointr/learnprogramming

From what I can see on the page you link to, then I don't think so.

I can recommend this book for beginners to programming who want to start out with C++.

u/silenceb4thestorm · 1 pointr/unrealengine

If you intent on learning C++ I advice against using Unreal to do so. First of you should get a more basic understanding of the language and programming in general.

As a game programming student I work together with designers. What I have noticed is that the blueprints these designers create are filled with mistakes and bugs. Simply because they don't understand the concept of programming, in any language that is.

Besides that you are only really ever forced to use C++ in Unreal for things that can seem rather more complicated, instantly being thrown in the deep.

I advice you start with the very basics (https://www.amazon.com/Beginning-C-Through-Game-Programming/dp/1305109910 read this if you want to understand the very basics). From there you should start exploring in smaller C++ projects to learn how to properly use functions and all the other benefits C++ brings with. This, in turn will help you make more robust blueprints making your code more readable, adaptable and less prone to bugs.

I could recommend you a youtube tutorial that teaches you how to make a very simple game from scratch using C++

u/nekochanwork · 1 pointr/learnprogramming

For some definitions:

REST

For a beginner like yourself, you can think of REST as meaning "pretty urls". It means much more than this, in the sense that RESTful urls encodes application state and interactions into the URL, but for your purposes, it is helpful to simplify REST down to "pretty urls". Reddit uses RESTful urls:

  • https://www.reddit.com/r/learnprogramming/comments/4l0qch/super_confused_on_how_to_start_learning_web/

    The non-RESTful (RESTless?) url would look something like:

  • https://www.reddit.com/comments.html?subreddit=learnprogramming&threadId=4l0qch&title=super+confused+on+how+to+start+learning+web

    MVC

    MVC means "model-view-controller", which refers to a specific way in which your application is organized in order to separate your domain layer (model), presentation layer (view), and business logic layer (controller). For a concrete example:

    Model: represents the data elements that you want to show to the user. A model is most often just a vanilla class with get/set properties. Let's imagine I'm building a blog from scratch and I want to show the user a page containing my post: my model logically includes my post (content, date, authors), comments (content, date, authors), etc. My model might look something like this:

    public class BlogPostModel
    {
    public Author[] Authors { get; set; }
    public DateTime CreatedOn { get; set; }
    public string Title { get; set; }
    public string Body { get; set; }
    public string[] Tags { get; set; }
    public Comment[] Comments { get; set; }
    }

    View: a view transforms the model into something your users can see and understand. In web development, a "view" is nearly always the HTML:

    <html>
    <head><title>@(Model.Title)</title></head>
    <body>
    <h1>@(Model.Title)</title>
    <div>By @(Model.Authors) on @(Model.CreatedOn.ToString("YYYY-mm-dd"))
    <div>
    @foreach(var tag in Model.Tags)
    {
    <a href="blog/tags/@(tag)">@(tag)</a>
    }
    </div>
    <div>@Model.Content</title>
    <h2>Comments</h2>
    @foreach(var comment in Model.Comments)
    {
    <div>. . .</div>
    }
    </body>
    </html>

    Controller: a controller contains your business logic. Typically, this includes logging users in, reading/writing to the database, validating user input on the server side. In ASP.NET MVC, your controller is a class which inherits from System.Web.Mvc.Controller. The controller class can exposes "actions", which are simply methods that return a type of ActionResult. ASP.NET will expose each "action" through a RESTful url called a "route". A simple controller looks like this:

    public class BlogController : Controller
    {
    // url: ~/blog/Article/{articleId}
    public ActionResult Article(int articleId)
    {
    // ...
    }

    // url: ~/blog/AddComment/{articleId}
    public ActionResult AddComment(int articleId, CommentModel model)
    {
    // ...
    }
    }

    ASP.NET

    ASP.NET is a set of classes and libraries built on top of the .NET Framework which helps you build web application. ASP.NET comes in two flavors:

  • ASP.NET WebForms. You can simply ignore this. No one uses WebForms anymore.
  • ASP.NET MVC. Learn this. This is a framework which makes it easy to write RESTful applications in the traditional model-view-controller fashion.

    WebAPI

    WebAPI allows you build RESTful web services that do not have a front-end (that is, calling methods on your API does not return any HTML). This can be occasionally useful.

    .NET

    The .NET framework is a set of libraries developed by Microsoft which helps developers build applications that execute in the Microsoft Common Language Runtime. If use C# on Windows, you already use .NET.

    Mono is alternative, open-source implementation of the .NET framework which runs on Linux.

    jQuery

    jQuery is a Javascript framework which is tailored to selecting and manipulating the DOM on the client side. (The "DOM" refers to the browsers representation of HTML elements on screen; changing an element on the DOM usually has a visible effect to the user in the browser.) It also has some useful utility methods for sending AJAX requests, animating elements on screen, etc.

    Although jQuery is omnipresent in web development, it's not a prerequisite for a beginner to learn. You can pick it up over time as you develop your skills.

    > I understand HTML, CSS, JavaScript, SQL, C# basics. What is the next step?

    Pick up a copy of Pro ASP.NET MVC 5 and start learning.
u/UpNorthMark · 1 pointr/csharp

https://www.amazon.ca/Pro-ASP-NET-Core-MVC-2/dp/148423149X

https://www.amazon.ca/Pro-ASP-NET-MVC-Adam-Freeman/dp/1430265299

Just about to pull the trigger one of these.
I'm not going going be applying for jobs for a couple of years because of college. Should i bother with MVC 5 or try to jump straight into core.

u/roastymctoasty · 1 pointr/learnprogramming

Cool thanks, I'll try those then.

I thought it also might be worth working through this book: http://www.amazon.com/Pro-ASP-NET-Experts-Voice-ASP-Net/dp/1430265299

Have you heard much about it?

u/cslcm · 1 pointr/gamedev

This book is highly recommended: http://www.amazon.co.uk/Beginning-C-Through-Game-Programming/dp/1435457420/ref=sr_1_2?ie=UTF8&qid=1398273399&sr=8-2&keywords=beginning+C%2B%2B+game+programming

But to be honest, the best way to learn is by doing - so google for some simple C++ examples, download the source code, compile, fiddle, recompile, test, keep adding stuff...

u/Palantir555 · 1 pointr/cpp

Haven't read it, but this book has good reviews on amazon: link

There are some others. Look them up and see which one you like the most.

u/bluish_ · 1 pointr/gamedev

I strongly recommend Beginning C++ Through Game Programming.

I'm currently in my second year at university studying games programming and this book has been a great help to me. It teaches you everything you need to know about C++ and does it using relevant and interesting examples, as well as explaining how and why different things would be used for games programming. After learning the basics you start create simple games such as "guess my number" and "tic tac toe" and finish by creating a "blackjack" game using advanced coding techniques.

u/shitzafit · 1 pointr/cscareerquestions

Thanks for the suggestions. I looked into C++ and checked into what seemed to be the most basic book on it at the time, https://www.amazon.com/Beginning-C-Through-Game-Programming/dp/1435457420/ref=sr_1_2?s=books&ie=UTF8&qid=1482801684&sr=1-2&keywords=c%2B%2B+beginners+games and a few others. All those did seem to introduce basic concepts of programming but in the samples I found that they tended to use jargon that I was not familiar with. I decided that I would study python until I understood the concepts and then move to more difficult languages. I often wonder myself that by learning python first, if I should instead be jumping headfirst into other languages that tend to be more in demand.

u/Monstr92 · 1 pointr/gamedev

My professor wrote this book on C++ programming. http://www.amazon.com/Beginning-C-Through-Game-Programming/dp/1435457420/ref=sr_1_3?ie=UTF8&qid=1341817785&sr=8-3&keywords=C%2B%2B

This is the best book because it asumes you know nothing about programming, and C++ and walks you through how to make a game in C++.

u/JunoJunoJunoJuno · 1 pointr/learnprogramming

If you have some experience with other languages already, especially if it's C++ or Java, then I'd recommend the "C# in a Nutshell" books. The first couple of chapters will cover most of the content of the language. http://www.amazon.com/C-5-0-Nutshell-Definitive-Reference/dp/1449320104

u/Xavierxf · 1 pointr/learnprogramming

/r/csharp recommends C# in a Nutshell.

Another vote for the Yellow Book because it's a great introduction to programming in general, along with C#.

u/JacksUnkemptColon · 1 pointr/dotnet

Perhaps not what you're looking for as this isn't an internet source, but I found the sections in C# 5.0 in a Nutshell on concurrent programming were especially good at explaining this stuff to a non-genius like myself.

u/pauloortins · 1 pointr/csharp

There are several books, blogs and videos that you can use.

These books are good choices:

C# 5.0 in a Nutshell and
Pro C# 5.0 and the .NET 4.5 Framework

I also wrote a blog post about it.

Resources to become a Ninja: C#

u/ewiethoff · 1 pointr/learnpython

> Is there any systematic book or tutorial that explains why you do every single thing it has you do?

I recommend the Python Cookbook. The recipes are fine, but really its the combination of code and explanation that's invaluable. So, read the whole book; don't skip the recipes that don't interest you.

u/nagracks · 1 pointr/learnpython

I am Python beginner too and I would say Python Cookbook is a very nice book. You should try it.

u/kurashu89 · 1 pointr/learnpython

If you want a serious book recommendation: Learning Python 5th Edition by Mark Lutz. It's a monster at 1600 pages but to say it's thorough is an understatement. I got the ebook so I can quickly search through it on my phone. Even though I wouldn't consider myself a beginner anymore, I find between this book and the Python Cookbook I find answers to most of my problems (unless they're related to a library).

You can also read Learn Python the Hard Way (my introduction to Python 2). Which is free but not anywhere near the scale of Learning Python. As a warning, there's some coarse language used in it.

If you don't know any Python -- and this will probably stir the pot a little -- learn Python 3. BUT learn how to make it Python 2 compatible. Sure, you'll give up things like advanced tuple unpacking and yield from (to name two off the top of my head) and you'll probably have to use six but when the day comes that you can fully move your library to just Python 3, you'll be thankful.

If you feel comfortable enough with Python to begin approaching a web framework, I would personally recommend Flask. I'm sure quite a few people would disagree and they probably make valid points. But Flask is easy to start with:

from flask import Flask

app = Flask(name)

@app.route('/')
def index():
return "Hello World"

if name == 'main':
app.run()

Miguel Grinberg (you'll see him float around /r/Flask and some of the other Python subs occasionally) has both a great blog series and a great book on building Flask projects. It's not the end all be all of Flask knowledge and honestly, I'd like see more written on working with bigger projects, but given Flask is only 4 years old I'm not surprised.

For Django, I've heard lots of good things about Two Scoops of Django but I've not read it (though, I need to at some point).

I'm unsure about other frameworks like Pyramid or TurboGears or WebPy.

You'll also want to have working knowledge of HTML (not hard), CSS and Javascript (much harder). And getting chummy with libraries like Bootstrap and JQuery/Angular/whatever is probably a good idea, too.

There's also specific concepts you'll want to be familiar with depending on where and what you work on: things like REST, JSON, Ajax, CSRF, etc.

u/KennedyRichard · 1 pointr/learnpython

Python Cookbook 3rd ed., by David Beazley and Brian K. Jones, has a dedicated chapter about metaprogramming. The book is so good the other stuff may also give some insight on metaprogramming or alternatives. I already read it and it gave me insight on my code about metaprogramming and other topics, so it is pretty useful. You can also find a lecture from Beazley about the topic with a quick google search with his name and the "metaprogramming" word.

There's also Fluent Python by Luciano Ramalho, which has three dedicated chapters about metaprogramming. Didn't read the chapters myself but I'm half way into the book and it is awesome, so I'm having great expectations about those chapters.

Don't mind the metaprogramming "chapter count", it is just a piece of information. Quality is what you should be looking for. And I believe those books have it. Even though I admit an entire book about metaprogramming would be neat.

u/DannyckCZ · 1 pointr/Python

Have a look at Python Cookbook, it might just right for you.

u/sharkmet · 1 pointr/learnpython

I think this Python Programming book is awesome yet ive seen some less than stellar reviews around here on reddit.

http://www.amazon.com/Python-Programming-Introduction-Computer-Science/dp/1887902996

u/TheLastKantian · 1 pointr/AskComputerScience

Forget websites. if you want to learn Computer Science and programming at the same time then read this book, https://www.amazon.com/Python-Programming-Introduction-Computer-Science/dp/1887902996 . Remember, READ CAREFULLY AND DO THE EXERCISES! I cannot stress that enough. Also, don't neglect building up mathematical maturity, most people end up screwing up in CS because their math skills are really weak.

u/squire_louseII · 1 pointr/Career

I program in Python, and used http://www.amazon.com/Python-Programming-Introduction-Computer-Science/dp/1887902996
to get going. CodeAcademy is also a good resource. I should say that I am not a software developer or anything similar, and my current position is not primarily about programming (though I'm trying to push it that way). I work as a 'Project Scientist' and use programming for data analysis, a little web-dev, and making various useful tools (programs). I would not have gotten the job though, despite it not being a 'Programmer' position, without programming. I guess I'm just trying to say that it is a super useful (and for some enjoyable) skill that can open doors for you.

u/gooycz · 1 pointr/McMaster

Computer Science is a science, you’re learning more about the why rather than the how. Programming is just a part of the picture but there’s more to Computer Science than that, I know this might sound contradictory to what I said before, but CS is sort of like applied math. I’d maybe pick up a textbook over the break and give the python course on code academy a go, this is the textbook we use at Mac http://www.amazon.ca/Python-Programming-Introduction-Computer-Science/dp/1887902996. In all honestly, I wouldn’t go into Computer Science if you’re not 100% about and have never programmed, I have and sort of regret it. I’d apply for engineering and if you’re still interested you could declare software in second year or switch to CS if you’re so inclined.

u/bloodnuts · 1 pointr/learnjavascript
u/V381 · 1 pointr/learnjavascript

Hey, I had problems to with that book, it was very dry and hard to understand.
Easiest book I found on learning Javascript is:
http://www.amazon.com/Smarter-Way-Learn-JavaScript-technology-ebook/dp/B00H1W9I6C/ref=sr_1_7?ie=UTF8&qid=1395283560&sr=8-7&keywords=javascript

Very little text, and plenty of exercises that you do online at book site. Try that book and goodluck.

u/EclecticRenaissance · 1 pointr/javaScriptStudyGroup

A Smarter Way To Learn helped a bit: https://www.amazon.com/Smarter-Way-Learn-JavaScript-technology-ebook/dp/B00H1W9I6C/ref=tmm_kin_swatch_0?_encoding=UTF8&qid=1509759677&sr=1-1

It's paired with exercises on the web. It helped me identify all the pieces of JS, but when I got to functions in my Bloc.io course, I began having trouble even though I could pass the functions chapters from the book. It's a good supplement.

I'd also suggest http://javascriptbook.com/ as it's very visual. I think I'm having trouble since I sucked at algebra in HS & variables are getting to me, so I've even signed up for https://learncodethehardway.org/javascript/ which comes out in April of 2018. I'll learn JS if it kills me.

u/asdflol4321 · 1 pointr/learnjavascript

I found this book, does anyone have any thoughts on this book please share :D

u/Wartz · 1 pointr/learnprogramming

If you're new to programming, this one is pretty good.

http://www.amazon.com/Smarter-Way-Learn-JavaScript-technology-ebook/dp/B00H1W9I6C

u/lostinthewhirlwind · 1 pointr/javascript

Just to add onto the awesome list already given, A smarter way to learn JavaScript is also great 👍🏾

u/anon848 · 1 pointr/learnprogramming

It's not uncommon to have exercises at the end of a chapter. This particular book even has online exercises.

u/Rogue_Philosophy · 1 pointr/learnprogramming

There are some good suggestions here, especially DonnyTheWalrus's reply.

However, regarding books I'd personally suggest the book "Head-First Javascript Programming"(make sure you get the latest the one that says "programming" in the title, as that is the more modern one.) or "A Smarter Way". In my opinion, these books are really good at taking a newbie into the intermediate level of Javascript by taking advantage of some of the best things we've learned about learning in general.

u/scripteaze · 1 pointr/learnjavascript

Great book, I'm sure many will agree is "A Smarter Way To Learn JS"

  • Possibly unrelated but Udumy is on sale 9.99 for everything until i believe the 29th, in case anyone is interested. Just a heads up. Yes they are always having a sale, but just in case you were waiting for the 9.99 one.
u/MoosePilot · 0 pointsr/learnprogramming

I've had to use C++ on and off. This book has been pretty good.

u/veyper · 0 pointsr/learnprogramming

I've found this book to be quite a good book and is quite complete. It may be a bit of a jump into the deep end, but I feel as though they explain things simply enough, piece by piece.

http://www.amazon.com/C-Primer-Plus-5th-Edition/dp/0672326973/ref=sr_1_1?ie=UTF8&qid=1333572620&sr=8-1

Also, C/C++ are GREAT first languages to learn. You have the opportunity to really understand how the computer itself functions with these languages, whereas with higher level languages, this type of understanding is quite easily lost as it becomes less important. It really depends on why you're learning it as to if it's a good first language or not.

u/PlatinumGlasses · 0 pointsr/learnprogramming

This is wonderful, thank you. There are some lines that I haven't learned yet and so I'll make sure to research on them. I'm currently using this book as a teaching guide, do you have any other suggestions for books I can use?

u/sh0rug0ru · 0 pointsr/java

My favorite book is Growing Object Oriented Software Guided By Tests.

I also enjoyed Agile Software Development, Principles, Patterns, and Practices. The older version of the book is in Java, the newer version in C#. But, it's more about the OO principles than the specifics of the language, so I'd recommend the C# version. Here's a really good chapter from the book, containing a good study of both bad OO and better OO.

u/odonian_dream · 0 pointsr/gamedev

Dude, read a good JS book, learn the basics of the framework you wanna use, bookmark the API reference page and start cranking.




If you need tutorials to understand coding principles you're not ready to make a game. Tutorials are for understanding certain un-obvious aspects of game dev or framework's way of doing things.





They're NOT solid foundations for learning game dev, just crutches.

u/RollingGoron · 0 pointsr/learnprogramming

A couple of questions:

  1. What Phone do you use?
  2. What computer OS do you use?


    If you have a PC, you can only develop for Android.
    If you have a Mac, you can developer for iOS or Android.

    I highly recommend a book over a website. They are much more comprehensive and go into greater detail.

    Mac/iOS uses Objective-C.
    http://www.amazon.com/Objective-C-Programming-Ranch-Guide-Guides/dp/032194206X/ref=sr_1_1?ie=UTF8&qid=1419300572&sr=8-1&keywords=big+nerd+ranch+objective+c

    http://www.amazon.com/iOS-Programming-Ranch-Guide-Guides/dp/0321942051/ref=sr_1_1?ie=UTF8&qid=1419300564&sr=8-1&keywords=Big+Nerd+ranch+ios

    Android

    http://www.amazon.com/Android-Programming-Ranch-Guide-Guides/dp/0321804333/ref=sr_1_1?ie=UTF8&qid=1419300685&sr=8-1&keywords=Big+Nerd+ranch+android

    Big Nerd Ranch books are awesome.
u/malpingu · -1 pointsr/compsci

Knuth's Art of Computer Programming

edit: I suppose a ";-)" smiley would have made the sardonicism a bit more obvious.

u/lemma_pumper · -1 pointsr/C_Programming

I'd recommend C Primer Plus, though to be honest it would be a much better investment to study C++ with C++ Primer Plus from the same author.

Do you have to go with C? C++ is better for beginners while still maintaining all the C things. If you absolutely have to go with C (which I'm assuming you are studying for coding systems - most likely embedded, or to maintain legacy code), the book I pointed out should start you out nicely.

If it is programming you want to learn, I'd recommend trying your hands at Java or Python or any interpreted OOP-focused language first. Java has very nice IDEs (Eclipse, NetBeans, etc.); it has its roots in C/C++ so it should help making the transition back and forth. C/C++ can be a mess to get the build environment set up correctly if you are not using an IDE like Visual Studio.

If you are in college, a lot of these technical books are free through your online library.

u/sethgecko · -2 pointsr/AskReddit

Not online, not for beginners, but if ever you are in a situation where you will have to maintain the code you wrote... this is something you will wish you read as early in your adventure into coding as possible:

Agile Principle Patterns Practices in C#

Agile Principle Patterns Practices in Java

u/shibacorp · -3 pointsr/learnprogramming

For JS, (personally) I've found http://www.amazon.com/Smarter-Way-Learn-JavaScript-technology-ebook/dp/B00H1W9I6C to be the best. You get right into it and does similar things to anki where it reinforces things you've learned previously. It's strict coding and you can't continue until you've gotten everything right.