Best computer software books according to redditors

We found 1,200 Reddit comments discussing the best computer software books. We ranked the 268 resulting products by number of redditors who mentioned them. Here are the top 20.

Next page

Subcategories:

Software utilities books
E-mail books
Personal finance software books
Business accounting software computer books
Quickbooks
Voice recognition software books
Optical character recognition software books
Statistical software books
Desktop database books
Design & graphics software books
Software suite books
Word processing books
Microsoft software books

Top Reddit comments about Computer Software:

u/Bizkitgto · 7876 pointsr/learnprogramming

I'd start with Harvard's CS50 on edx, it's the best course you'll find anywhere bar none. The instructor, Dave Malan is world class. Check out CS50, and the sub r/cs50 has a lot of like minded people like you. (Note: this course is free)

Stackoverflow is your friend where you can ask any question you have or bounce ideas off of others.

Learn Java OOP (here is an excellent course): Java MOOC

Free Code Camp for web development

Build your own operating system: NAND2TETRIS

Cave of Programming : All kinds of programming

Open Source Society University: This is a solid path for those of you who want to complete a Computer Science course on your own time, for free, with courses from the best universities in the World.

r/arduino for some embedded programming fun!

.....and of course for anything under the sun: https://www.edx.org/ & https://www.coursera.org/



For BSD: https://www.freebsd.org/

For Linux: https://www.archlinux.org/



For x86 assembly: http://opensecuritytraining.info/IntroX86.html [How far down the rabbit hole do you want to go?]

***

Edit: Wow, my first Reddit Gold!! Thank-you so much kind people!!

Edit2: Colt Steele has a good web dev course and is highly recommended to do in parallel with freecodecamp

Edit3: The MIT Challenge
is Scott Young's blog on how he completed the entire 4 year MIT Computer Science curriculum in 12 months

Edit 4: The Rails Tutorial by Michael Hartl is the Bible for learning Ruby on Rails

Edit 5: For deeper knowledge of OOP check out Sandi Metz’s POODR

Edit 4: The Bible for C Programming: K&R

u/samort7 · 257 pointsr/learnprogramming

Here's my list of the classics:

General Computing

u/MrPhi · 215 pointsr/InternetIsBeautiful

You don't need school to learn how to do that. It's true for most things in life but it is even easier with computer science.

Want to learn C ? No school will ever teach it better than the book The C Programming Language (also called K&R) by Brian Kernighan and Dennis Ritchie.
Want to learn C++ ? You should start with C or C# or Java and then go for Programming: Principles and Practice Using C++ by Bjarne Stroustrup.
Want to learn Python ? Go to python.org and pick a tutorial.
Want to learn Javascript ? Eloquent JavaScript by Marijn Haverbeke.
Want to learn HTML5 ? Maybe have a look at diveintohtml5.info or W3Schools
Want to learn Java ? The Java Programming Language by Ken Arnold or Head First Java by Kathy Sierra.

You need two things, time and will. You'd be surprise how easy it is to learn all those things if you like it and if you have a dream project.

edit: Woh, thanks for the gold. :D

u/UghWhyDude · 199 pointsr/worldnews

Ditto - I have a Eastern Economy Edition of K&R when I took up learning C as a hobby. When I looked up the price for the same on the US version of Amazon, the price comparison was startling.

[Here's the US paperback version, priced at about 53 USD according to Amazon, i.e. 3,554 Indian Rupees. Of course, the cheapest one you can still get new is about USD 15 or so dollars. ] (https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628/ref=sr_1_1?s=books&ie=UTF8&qid=1474085789&sr=1-1&keywords=kernigan+and+richie)

Here's the Indian "Eastern Economy Edition", paperback, of the same book, identical in every single respect, priced at a whopping 194 rupees, or about 3 dollars.

For the money you'd be shelling out, it'd be cheaper for you to buy a brand new copy of the book from an Indian bookstore and have it shipped out to you (possibly even through an express courier like DHL or FedEx) in the US than just buy the book in the US outright.

u/TurkishSquirrel · 59 pointsr/learnprogramming

The C Programming Language (commonly known as K&R) remains the best resource for learning C.

u/indrora · 55 pointsr/CrappyDesign

the bookstores of American universities are independently owned/operated to the university, and in fact just license or are a reseller of materials from the university itself when it comes to branded gear.

They're known to overcharge for a lot of books. Consider that The C Programming Language costs $30 new for a copy. My university wants $50 for a used copy of an out of date printing that was based on a draft.

The professor of this class actively says "DO NOT BUY THE BOOK. I WILL PROVIDE YOU A PDF." Despite this, people still buy the book.

This semester, I bought a book for one of my classes on amazon because the bookstore was like "LOL IT'S OUT OF PRINT WE DON'T HAVE IT." This was inverse of the email (that was later claimed as "forged") from the instructor, forwarded from the bookstore, saying it was in stock. On top of that, they wanted $350 for a book that's $40 new.

u/Idoiocracy · 38 pointsr/programming
u/Tiberius1900 · 33 pointsr/learnprogramming

To get a feel for low-level computing you should learn C. All modern operating systems and low level utilities are written in C (or C++, which is C with objects). It is as close to the metal as you can get while still being useful. Maybe you could fiddle around with some assembly afterwards.

Now, as for understanding how an operating system form top to bottom works, Windows is a pretty shit place to start for the following reasons:

  • Proprietary nature means little documentation about how the OS actually works internally.
  • Single desktop environment and lack of naked shells makes it hard to understand how and why some things work.
  • Limited capabilities for programming without an IDE, which is what you should be doing if you want to learn C (note that I said learn C. Particularly in the context of understanding, say, how data streams and the like work, programming without an IDE is infinitely better).
  • etc.

    Instead, you should learn Linux, and learn how Linux works. Installing it in a VM is fine. If you're looking to learn, I suggest you start with Debian, and, after you get comfortable with the command line, move to Arch. Arch is great for learning, if not much else, because it makes you do most things manually, and has a pretty extensive wiki for everything you may need to know.

    Resources:

    A Linux tutorial for beginners: https://linuxjourney.com

    A pretty decent online C tutorial (note, you should compile the programs on your own system, instead of doing their online exercises): http://www.learn-c.org

    K&R2 (the "proper" way to learn C): https://www.amazon.com/dp/0131103628/ref=cm_sw_r_cp_awdb_t1_FSwNAbFDJ3FKK

    Computer Systems A Programmer's Perspective, a book that might just be what you're looking for: https://www.amazon.com/Computer-Systems-Programmers-Perspective-3rd/dp/013409266X
u/kindofasickdick · 29 pointsr/programming

K.N. King's C programming
covers upto C99, I don't know if there's anything significant in C11.

u/cronin1024 · 25 pointsr/programming

Thank you all for your responses! I have compiled a list of books mentioned by at least three different people below. Since some books have abbreviations (SICP) or colloquial names (Dragon Book), not to mention the occasional omission of a starting "a" or "the" this was done by hand and as a result it may contain errors.

edit: This list is now books mentioned by at least three people (was two) and contains posts up to icepack's.

edit: Updated with links to Amazon.com. These are not affiliate - Amazon was picked because they provide the most uniform way to compare books.

edit: Updated up to redline6561


u/phao · 21 pointsr/learnprogramming

If you have the time, learn scheme. The scheme books I've seen are extremely well written and go way beyond simply talking about the language.

You could start at SICP, but it doesn't assume previous programming knowledge. It's a beginner's book, but don't take this as "the book is easy". Try it out and see what you think about it.

Another one is The Little Schemer. This one is a book on recursion. It uses scheme too. It's probably the best programming book I've read. I never stopped to think about a ranking, but thinking on the spot, this would be the 1st.

http://www.amazon.com/The-Little-Schemer-4th-Edition/dp/0262560992/

SICP is freely available: http://mitpress.mit.edu/sicp/ with video lectures from a course (based on the book; or the book is based on the course) given at MIT http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/

This one is also pretty good. http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html

There are other scheme books out there. There is, for example, a "How to Design Programs" http://htdp.org/, which also has a course based on it: https://www.coursera.org/course/programdesign -- but I've never read this book or taken this course.

u/DucBlangis · 20 pointsr/netsecstudents

Here is a "curriculum" of sorts I would suggest, as it's fairly close to how I learned:

  1. Programming. Definitely learn "C" first as all of the Exploitation and Assembly courses below assume you know C: The bible is pretty much Dennis Richie and Kernighan's "The C Programming Language", and here is the .pdf (this book is from 1988, I don't think anyone would mind). I actually prefer Kochan's book "Programming in C" which is very beginner freindly and was written in 2004 rather than 1988 making the language a little more "up to date" and accessible. There are plenty of "C Programming" tutorials on YouTube that you can use in conjunction with either of the aforementioned books as well. After learning C than you can try out some other languages. I personally suggest Python as it is very beginner friendly and is well documented. Ruby isn't a bad choice either.

  2. Architecture and Computer basics:
    Generally you'll probably want to look into IA-32 and the best starting point is the Intel Architecture manual itself, the .pdf can be found here (pdf link).
    Because of the depth of that .pdf I would suggest using it mainly as a reference guide while studying "Computer Systems: A Programmers Perspective" and "Secrets of Reverse Engineering".

  3. Operating Systems: Choose which you want to dig into: Linux or Windows, and put the effort into one of them, you can come back to the other later. I would probably suggest Linux unless you are planning on specializing in Malware Analysis, in which case I would suggest Windows. Linux: No Starch's "How Linux Works" is a great beginner resource as is their "Linux Command Line" book. I would also check out "Understanding the Linux Kernel" (that's a .pdf link). For Windows you can follow the Windows Programming wiki here or you can buy the book "Windows System Programming". The Windows Internals books are generally highly regarded, I didn't learn from them I use them more as a reference so I an't really speak to how well they would teach a "beginner".

  4. Assembly: You can't do much better than OpenSecurityTraining's "Introductory Intel x86: Architecture, Assembly, Applications, & Alliteration" class lectures from Xeno Kovah, found here. The book "Secrets of Reverse Engineering" has a very beginner friendly introduction to Assembly as does "Hacking: The Art of Exploitation".

  5. Exploitation: OpenSecurityTraining also has a great video series for Introduction to Exploits. "Hacking: The Art of Exploitation" is a really, really good book that is completely self-contained and will walk you through the basics of assembly. The author does introduce you to C and some basic principles of Linux but I would definitely suggest learning the basics of C and Linux command line first as his teaching style is pretty "hard and fast".

  6. Specialized fields such as Cryptology and Malware Analysis.


    Of course if you just want to do "pentesting/vuln assessment" in which you rely more on toolsets (for example, Nmap>Nessus>Metasploit) structured around a methodology/framework than you may want to look into one of the PACKT books on Kali or backtrack, get familiar with the tools you will use such as Nmap and Wireshark, and learn basic Networking (a simple CompTIA Networking+ book will be a good enough start). I personally did not go this route nor would I recommend it as it generally shys away from the foundations and seems to me to be settling for becoming comfortable with tools that abstract you from the real "meat" of exploitation and all the things that make NetSec great, fun and challenging in the first place. But everyone is different and it's really more of a personal choice. (By the way, I'm not suggesting this is "lame" or anything, it was just not for me.)

    *edited a name out





u/Thedabit · 18 pointsr/lisp

Some context, I've been living in this house for about 3 years now, my girlfriend and i moved in to take care of the owner of the house. Turns out that he was a big lisp / scheme hacker back in the 80s-90s and had developed a lot of cutting edge tech in his hay day. Anyway, these books have been hiding in his library downstairs...

It was like finding a bunch of hidden magical scrolls of lost knowledge :)

edit: I will compile a list of the books later. I'm out doing 4th of July things.

update: List of books

  • Lisp: Style and Design by Molly M. Miller and Eric Benson
    ISBN: 1-55558-044-0

  • Common Lisp The Language Second Edition by Guy L. Steele
    ISBN: 1-55558-042-4

  • The Little LISPer Trade Edition by Daniel P. Friedman and Matthias Felleisen
    ISBN: 0-262-56038-0

  • Common LISPcraft by Robert Wilensky
    ISBN: 0-393-95544-3

  • Object-Oriented Programming in Common Lisp by Sonya E. Keene
    ISBN: 0-201-17589-4

  • Structure and Interpretation of Computer Programs by Harold Abelson, Gerald Jay Sussman w/Julie Sussman
    ISBN: 0-07-000-422-6

  • ANSI Common Lisp by Paul Graham
    ISBN: 0-13-370875-6

  • Programming Paradigms in LISP by Rajeev Sangal
    ISBN: 0-07-054666-5

  • The Art of the Metaobject Protocol by Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow
    ISBN: 0-262-11158-6

  • Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig
    ISBN: 1-55860-191-0

  • Practical Common Lisp by Peter Seibel
    ISBN: 1-59059-239-5

  • Common Lisp The Language by Guy L. Steele
    ISBN: 0-932376-41-X

  • Anatomy of Lisp by John Allen
    ISBN: 0-07-001115-X

  • Lisp Objects, and Symbolic Programming by Robert R. Kessler
    ISBN: 0-673-39773-4

  • Performance and Evaluation of Lisp Systems by Richard P. Gabriel
    ISBN: 0-262-07093-6

  • A Programmer's Guide to Common Lisp by Deborah G. Tatar
    ISBN: 0-932376-87-8

  • Understanding CLOS The Common Lisp Object System by Jo A. Lawless and Molly M. Miller
    ISBN: 0-13-717232-X

  • The Common Lisp Companion by Tim D. Koschmann
    ISBN: 0-417-50308-8

  • Symbolic Computing with Lisp and Prolog by Robert A. Mueller and Rex L. Page
    ISBN: 0-471-60771-1

  • Scheme and the Art of Programming by George Springer and Daniel P. Friedman
    ISBN: 0-262-19288-8

  • Programming In Scheme by Michael Eisenberg
    ISBN: 0-262-55017-2

  • The Schematics of Computation by Vincent S. Manis and James J. Little
    ISBN: 0-13-834284-9

  • The Joy of Clojure by Michael Fogus and Chris Houser
    ISBN: 1-935182-64-1

  • Clojure For The Brave and True by Daniel Higginbotham
    ISBN: 978-1-59327-591-4



u/Mansaber · 18 pointsr/unix

If you're new to C, read K&R.

Once you've done that (or if you already know C) then read THE book on Unix programming

u/[deleted] · 18 pointsr/darknetplan

What OS? Linux, of course. When TPB order everything locked down, you don't want to be caught using a Microsoft OS. -- What distribution? The easy path is Ubuntu, with the Cinnamon UI, or LinuxMint 13, when issued (May 2012).

What IDE? There's lots to choose from. My favorite is "geany".

https://en.wikipedia.org/wiki/Geany

For TCP/IP protocol tutorial. Recently updated by Wright:
Stevens, "TCP/IP Illustrated", 3-volume set.

http://www.amazon.com/TCP-IP-Illustrated-Volume-Set/dp/0201776316

On human interface guidelines relevant to programming:

https://en.wikipedia.org/wiki/Human_interface_guidelines

For GNOME 2, see:

http://library.gnome.org/devel/hig-book/stable/

To develop Linux applications:

You are right. You MUST know how to program in C. When others tell you that object oriented programming is the thing, know that you can do object oriented programming in C. Avoid interpreted languages (Python, Java, and others) as a first programming language. Interpreted languages teach bad habits and hid too much of what's going on from you such that debugging becomes difficult to impossible.

However, if all you intend is "casual programming", the Python will do, if you must. It's just not the best choice first a first language if your intent is to become a "professional programmer". I use Python myself; It works for what I need to do quick and dirty.

Definitive, but for experienced programmers:

http://www.amazon.com/C-Programming-Language-2nd-Edition/dp/0131103628/ref=sr_1_1?s=books&ie=UTF8&qid=1335197606&sr=1-1

As a tutorial for someone learning a first programming language and how to program from zero:

Perry, "Absolute Beginner's Guide to C", 2ed.
-- I have not read the book, but the ToC looks reasonable for a beginner.

http://www.amazon.com/Absolute-Beginners-Guide-2nd-Edition/dp/0672305100/ref=sr_1_6?s=books&ie=UTF8&qid=1335197606&sr=1-6

OK, you don't want a full CS curriculum, but some topics in discrete mathematics are mandatory. ... Ack! Having looked over the offerings at Amazon, I believe that Epp, "Discrete Mathematics with Applications" may be the best of the lot, but at $187, it is hard to recommend without knowing your intent and interest. The reason I suggest this title is that it looks focused on application to computer science topics. It covers a number of topics that are NOT covered in many of the other titles, enough so that should you use other texts you will have spent more than the $187 that this title includes. JMHO.

http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/ref=sr_1_1?s=books&ie=UTF8&qid=1335199316&sr=1-1

See also: Sedgwick, "Algorithms" -- You'll probably need it sooner than later.

http://www.amazon.com/Algorithms-4th-Edition-Robert-Sedgewick/dp/032157351X/ref=sr_1_1?s=books&ie=UTF8&qid=1335200153&sr=1-1

Remember that Linux OS? You are going to need some programming tools, right? If you intend to write GUI applications based on the GTK+ toolkit, then install the package "glade" or "glade-gtk". Installing a glade package will suck in over 100 other packages essential to building a GTK based GUI application. Specifying glade to the package manager is just easier that finding and installing all the other necessary parts by hand.

If you are going to do command line based UI programs, then package "build-essentials" should be adequate.

There are some other things to read:

On how to organize, grow and maintain a Linux software development project: Fogel, "Producing Open Source Software"

http://producingoss.com/

You can read it online here, but buy the book too to help support Fogel. He's gotta eat too.

On the culture of writing Open Source Software:

Raymond, "The Cathedral and the Bazaar"

http://www.catb.org/~esr/writings/cathedral-bazaar/

Linux programming is not like Windows programming.
Read and study ESR's TAOP.

Raymond, "The Art of Unix Programming"

http://www.catb.org/~esr/writings/taoup/html/

You can read it online, free. However, buy a hardcopy too. Raymond has to eat too.

Now to get really technical. What interface do you write to?

Kerrick, "The Linux Programming Interface: A Linux and UNIX System Programming Handbook"

http://www.amazon.com/The-Linux-Programming-Interface-Handbook/dp/1593272200/ref=sr_1_1?s=books&ie=UTF8&qid=1335201257&sr=1-1#reader_1593272200

Beginning to focus on GNU style programming:

GNU Coding Standards

https://www.gnu.org/prep/standards/

GNU Coding Standards is more than how to and how much to indent a line or how to set braces. You will get into the topic of Make and Autotools. Make is a program to build complex softare and Autotools is about how to build a package for distribution, the package that any Unix flavor can use; it is not focused on any specific distribution. See also: "configure and make"

Enough! There's more, but I have too much time in this already for today.

[edit: typos]

u/TheHyperB3ast · 17 pointsr/programming

K&R. If you're in a programming 101 class that involves C, just buy this book unless your prof tells you otherwise.
---

K&R has the reputation it has because they did an excellent job of balancing between "experienced programmers can use this as a reference" and "newbie programmers can use this as a starting point. Let me clarify: K&R will not make you a better programmer, but it is an excellent example of what industry professionals would consider to be a good piece of technical documentation.

If you're going to ever work with APIs or large amounts of technical documentation about software, this book will mirror the experience you get reading "good docs". In short, learning C from this books does an excellent job of showing you how much you'll have to figure out yourself and what information you should be expected to be given to you when working in the industry.

u/cismalescumlord · 17 pointsr/learnprogramming

It's not cheap, but C Programming a modern approach is very good.

All you need to get started is a text editor and a compiler. Which ones they are depends on your platform.

u/Cohesionless · 17 pointsr/cscareerquestions

The resource seems very extensive such that it should suffice you plenty to be a good software engineer. I hope you don't get exhausted from it. I understand that some people can "hack" the technical interview process by memorizing a plethora of computer science and software engineering knowledge, but I hope you pay great attention to the important theoretical topics.

If you want a list of books to read over the summer to build a strong computer science and software engineering foundation, then I recommend to read the following:

  • Introduction to Algorithms, 3rd Edition: https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844. A lot of people do not like this classic book because it is very theoretical, very mathematical, and very abstract, but I think that is its greatest strength. I find a lot of algorithms books either focus too much about how to implement an algorithm in a certain language or it underplays the theoretical foundation of the algorithm such that their readers can only recite the algorithms to their interviewers. This book forced me to think algorithmically to be able to design my own algorithms from all the techniques and concepts learned to solve very diverse problems.

  • Design Patterns: Elements of Reusable Object-Oriented Software, 1st Edition: https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/. This is the original book on object-oriented design patterns. There are other more accessible books to read for this topic, but this is a classic. I don't mind if you replace this book with another.

  • Clean Code: A Handbook of Agile Software Craftsmanship, 1st Edition: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882. This book is the classic book that teaches software engineer how to write clean code. A lot of best practices in software engineering is derived from this book.

  • Java Concurrency in Practice, 1st Edition: https://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601. As a software engineer, you need to understand concurrent programming. These days there are various great concurrency abstractions, but I believe everyone should know how to use low-level threads and locks.

  • The Architecture of Open Source Applications: http://aosabook.org/en/index.html. This website features 4 volumes of books available to purchase or to read online for free. It's content focuses on over 75 case studies of widely used open-source projects often written by the creators of said project about the design decisions and the like that went into creating their popular projects. It is inspired by this statement: "Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters."

  • Patterns of Enterprise Application Architecture, 1st Edition: https://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420/. This is a good read to start learning how to architect large applications.

    The general theme of this list of books is to teach a hierarchy of abstract solutions, techniques, patterns, heuristics, and advice which can be applied to all fields in software engineering to solve a wide variety of problems. I believe a great software engineer should never be blocked by the availability of tools. Tools come and go, so I hope software engineers have strong problem solving skills, trained in computer science theory, to be the person who can create the next big tools to solve their problems. Nonetheless, a software engineer should not reinvent the wheel by recreating solutions to well-solved problems, but I think a great software engineer can be the person to invent the wheel when problems are not well-solved by the industry.

    P.S. It's also a lot of fun being able to create the tools everyone uses; I had a lot of fun by implementing Promises and Futures for a programming language or writing my own implementation of Cassandra, a distributed database.
u/Yawzheek · 17 pointsr/learnprogramming

C Programming: A Modern Approach is quite good, and before I go into detail, let's pause for a moment and discuss "The C Programming Language" by Dennis Ritchie.

It's incredibly good, provided you're an experienced programmer. It's incredibly bad otherwise. There's no doubt Ritchie knew his stuff (he did create the language), but from a learning perspective of a new programmer, you're going to be incredibly lost. Hell, I came from quite a bit of C++, and even after working with some C code it was quite confusing.

"A Modern Approach" is very much a book with which you can learn C, even as a beginner, but also doesn't treat you like an idiot. One thing it does quite well is it contains a "Q&A" section that covers common questions (or otherwise things you wish you had thought to ask) and is quite detailed, including some modestly challenging exercises. He posts the solutions to some of the challenges online as well.

It's not perfect, but I've never found the "perfect" book. The book is, however, thorough, reasonably easy to understand, and has a knack for knowing the mistakes rookies will undoubtedly make, as well as questions they probably have, which is surprisingly rare.

When it comes to programming books for the beginner, most fall into the category of:

  • "Cutesy" but teaches bad habits and doesn't cover enough, which is where I suspect "Head First" is firmly located based on my experience with their HTML series.

  • Advanced, which is where "The C Programming Language" firmly falls, despite what others may have you believe. Difficult if not impossible for the beginner to crack, but great coverage.

    King opted for an alternative route, in that it has great coverage, isn't too advanced, but also isn't cute either. He very much gets down to business, but has an understanding of his audience. My only fault? Again, some of the examples get somewhat complicated for the beginner, and he doesn't pause every so often to tell you to take a break from reading and give you a small task to try yourself.

    EDIT: Also, avoid "C: How to Program" by Dietel. Quite literally nearly half the book is just a crash course into C++. I've no idea how this ever made it past a publisher. Well, it's a Pearson book, so I have an idea, and it also helps explain the ridiculous-ass price. Put another way, for the cost of this one book, you could buy King's book and another book on C++ new, and still have money left over.
u/gingenhagen · 15 pointsr/ruby

The Little Schemer will teach you to truly think recursively. It teaches via a continuous series of question and answer.

u/VampireCampfire · 15 pointsr/C_Programming

Either K&R's The C Programming Language which is often considered "The C Bible" and is written by the authors of C, or a more recently published C Programming: A Modern Approach are both excellent and comprehensive learning resources. I personally recommend the latter because I believe it is more relevant and includes almost, if not all, the information in K&R.

u/FifteenthPen · 15 pointsr/learnprogramming

C++ Primer is amazing, but definitely not for beginners. Since you're totally new to programming, I'd suggest learning a bit of Python first to get the basics down, or if you're feeling more adventurous, pick up a copy of K&R's "The C Programming Language", as it's a great introduction to lower-level programming, and it'll make C++ a lot easier to understand.

Some good freely available online Python books:

Invent With Python

Learn Python the Hard Way

Learn Python the Hard Way is easier than it sounds, I assure you. I would definitely recommend starting with Invent Your Own Computer Games With Python, though.

A couple more useful things to know:

  • If you don't understand something, Google it. Stackoverflow, especially, tends to have a lot of good discussions on common pitfalls encountered by newbies.

  • If Googling doesn't clear it up, don't be afraid to ask for help. This very subreddit is a great place to do so when you get particularly stuck!
u/gremy0 · 14 pointsr/ProgrammerHumor

I found some of the more abstract ways to introduce functional programming to be good fun. Like the Clojure Koans or The Little Schemer

u/kalmar · 14 pointsr/programming

Haskell does throw a little too much at you at once, I agree. Another option though would be to go straight with ML, using The Little MLer. It's like The Little Schemer but, shockingly, in (S)ML. It'll get you enough of types and recursion and consing and so on that Haskell will "only" be adding laziness, type classes and monads. At the same time, I think it's a very accessible book, and it mentions food a lot.

Or perhaps even learn Scheme, then ML, then Haskell. Make your life easier at each stage, and learn more languages to boot.

u/kotajacob · 14 pointsr/learnprogramming

I'm confused do you want someone with a native American accent, a British accent, or and American accent?


(Also in general videos tend to be a poor medium for learning the C language. Most learn from books like this)

u/toodledoo · 12 pointsr/programming

Java Concurrency in Practice by Brian Goetz is a very good book to get started on the concurrency package. I would recommend reading through it atleast once.

u/Daersk · 12 pointsr/computerscience

I started to teach myself C, and this book has been an unbelievable resource. It starts pretty basic, but it gets into the meat of C pretty quickly.

u/the_omega99 · 12 pointsr/learnprogramming

I'm going to give some very different advice than everyone else here: expand what you already know. Everyone else is recommending new languages (in my opinion, it's better to know a few languages very well than to know many languages poorly) or something highly complicated (game design is a fantastic way to go, but one requires a very diverse skill set to create games solo).

Someone mentioned programming books. I highly recommend learning from books. The FAQ has a list of some particularly good ones. However, I don't recommend learning a new language from these. Knowing many languages poorly is not a very useful skill. It's far more useful to know a few languages very well. It's even easier to learn other languages when you have a strong grasp on programming, which requires focus.

But above all, languages aren't important! I recommend sticking with a language primarily so you don't have to learn a new one. You already know Java, so you can go straight into a book on algorithms and data structures without relearning the basics to a language. Don't focus on learning a language, focus on learning how to program.

Learning programming techniques instead of a specific language is far more useful to a programmer. Data structures are mandatory knowledge. Do you know how to use lists (like a linked list)? How about hash tables? What algorithms can you use to search for specific data? These skills can usually be transferred to other languages, sometimes with minimal changes.

So here's my advice: start with a book on algorithms and data structures. Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein is probably the best known book for beginners. Note that you must already know how to program. I don't know how good your programming is, so it may be necessary to first start with a book on Java to fill in the blanks from online tutorials. The FAQ should have some good advice, there. The book I used for Java was Horstmann's Big Java.

Anyway, databases is what I'd expand into next. They're not Java, but a core part of many modern programs. Thankfully, the basics are quite easy to pickup.

A book on software engineering is a good next choice, since software engineering goes over design patterns. Just how would you design a large program? Where do you start? Software engineering is crucial for ensuring projects don't become Duke Nukem's.

Beyond that, I would hope you'd have some specific interests, yourself. For example, perhaps you're interested in AI or security (etc). If you have some personal interests, they make great areas to focus once you've picked up the basics.

But for now, focus on learning to program, not just "languages".

u/w3woody · 12 pointsr/computerscience

Read about the topic.

Practice.

Set yourself little challenges that you work on, or learn a new language/platform/environment. If you're just starting, try different easy programming challenges you find on the 'net. If you've been doing this a while, do something more sophisticated.

The challenges I've set for myself in the recent past include writing a LISP interpreter in C, building a recursive descent parser for a simple language, and implementing different algorithms I've encountered in books like Numerical Recipes and Introduction to Algorithms.

(Yes, I know; you can download libraries that do these things. But there is something to be gained by implementing quicksort in code from the description of the algorithm.)

The trick is to find interesting things and write code which implements them. Generally you won't become a great programmer just by working on the problems you find at work--most programming jobs nowadays consist of fixing code (a different skill from writing code) and involve implementing the same design patterns for the same kind of code over and over again.

----

When I have free time I cast about for interesting new things to learn. The last big task I set for myself was to learn how to write code for the new iPhone when it came out back in 2008. I had no idea that this would change the course of my career for the next 9 years.

u/Joecasta · 12 pointsr/computerscience

If you aren't doing well in your current CS courses, I'd highly recommend you focus on your university's courses and do well in them before deciding to bite off more than you can chew. Do some research and look for very basic coding books, not ones like this: https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628/ref=sr_1_1?ie=UTF8&qid=1478891766&sr=8-1&keywords=introduction+to+C+programming

Look for a bit more like this: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208/ref=sr_1_1?ie=UTF8&qid=1478891799&sr=8-1&keywords=Head+first+java


This depends on what language you are currently learning right now. Don't worry about entering contests and participating in projects or open source coding until maybe second or third year in especially if you haven't had any prior experience. Don't rush yourself into this, you need to make sure you absolutely understand the basics before going into things like hackathons or being very concerned about internships. Take your time learning, and don't enroll onto too many online courses if you think that you can't handle it. Yes, online courses can be helpful, and will only be really helpful if you treat them like real classes. I would advise against code academy or khan academy to learn languages since I've gone through them and they never helped me really grasp CS material better than a book and actual coding. Key here is to code as you go through a book, or else you'll never learn how to actually code. Do tons of simple programs and if you don't understand code bits, don't get frustrated. Copy paste the code, and use a debugger (a bit more advanced but very very helpful) to go through step by step what the code is doing.


Main Points:


  1. Don't rush, learn slowly, fully understand each concept before moving on


  2. This won't be very intuitive for most people, it's like learning an entirely new thing, but you will eventually hit a wall and learning gets much much easier in the future.


  3. Don't do more than one or two online courses, and don't be too concerned about doing any projects or competitions you likely won't be able to understand most project code or any, same goes for competitions until you at least fully know how to code in an industry standard high level language such as C/C++ or Java.


  4. There's a lot to do, but don't overwhelm yourself, pause every now and then and focus on a single task


    Best of luck to you, remember to enjoy the process, and keep in mind that while you might not like coding, CS isn't coding. It's the principles that underlie what we can do with code. A lot of it comes from really basic logic, you will be surprised in the future how easy some things can be to understand with basic step by step thinking.
u/IbeatDatPussyUp · 11 pointsr/learnprogramming

"The C programming Language" is an excellent book. I learned most of the concepts and coding from that book.

u/tagx · 11 pointsr/programming

Kernighan and Ritchie's The C Programming Language

It will teach you almost all you need to know. It is written by the creators of C and is still the best way to learn C.

I even use it as a reference for parts of C I do not use often.

Also, you should try to be running a unix os, since c programming will be much more integrated and easier.

link: http://www.amazon.com/Programming-Language-Prentice-Hall-Software/dp/0131103628

u/lbkulinski · 11 pointsr/Purdue

I recommend reading and working through The C Programming Language, which will likely be your textbook. Java syntax comes from C/C++, so that part will be somewhat familiar. C is a lot more low-level, though.

u/charles__l · 11 pointsr/lisp

Lisp is like magic - it's the programmable programming language - if you learn it, everything else kind of pales in comparison :P

One fascinating aspect of lisp is that it's based on lambda calculus, which is basically a cleaner alternative to Turing machines (Turing machines are basically a mathematical way to describe computable problems). After learning about lambda calculus, Turing machines looked like a hack to me. A decent non-mathematical guide I found introducing them was this: http://palmstroem.blogspot.com/2012/05/lambda-calculus-for-absolute-dummies.html

Even though lisp allows for a lot of functional programming, it's not purely functional, and can be used to write object oriented code, or anything else really.

The books I'd recommend to learning it are:

  • The Little Schemer - a lovely, beginner friendly book that introduces Lisp and computation in a rather unique way.
  • Structure and Interpretation of Computer Programs - this is the book that was used to teach a bunch of programming classes at MIT, and is a classic text for computer science. Despite its advanced topics, it's still rather approachable, especially if you have a decent amount of programming background.
u/jacobolus · 11 pointsr/math

Your post has too little context/content for anyone to give you particularly relevant or specific advice. You should list what you know already and what you’re trying to learn. I find it’s easiest to research a new subject when I have a concrete problem I’m trying to solve.

But anyway, I’m going to assume you studied up through single variable calculus and are reasonably motivated to put some effort in with your reading. Here are some books which you might enjoy, depending on your interests. All should be reasonably accessible (to, say, a sharp and motivated undergraduate), but they’ll all take some work:

(in no particular order)
Gödel, Escher, Bach: An Eternal Golden Braid (wikipedia)
To Mock a Mockingbird (wikipedia)
Structure in Nature is a Strategy for Design
Geometry and the Imagination
Visual Group Theory (website)
The Little Schemer (website)
Visual Complex Analysis (website)
Nonlinear Dynamics and Chaos (website)
Music, a Mathematical Offering (website)
QED
Mathematics and its History
The Nature and Growth of Modern Mathematics
Proofs from THE BOOK (wikipedia)
Concrete Mathematics (website, wikipedia)
The Symmetries of Things
Quantum Computing Since Democritus (website)
Solid Shape
On Numbers and Games (wikipedia)
Street-Fighting Mathematics (website)

But also, you’ll probably get more useful response somewhere else, e.g. /r/learnmath. (On /r/math you’re likely to attract downvotes with a question like this.)

You might enjoy:
https://www.reddit.com/r/math/comments/2mkmk0/a_compilation_of_useful_free_online_math_resources/
https://www.reddit.com/r/mathbooks/top/?sort=top&t=all

u/Quince · 11 pointsr/programming

The problem is, most books are ground out by publishing mills and have very little value - especially to more experienced developers.

I try to choose books carefully and buy very few because most simple answers are already online.

One recent purchase which I felt was actually worth the money (i.e., the same depth of discussion and information was unavailable free in such as well-presented format) was:

"Java Concurrency in Practice" by Brian Goetz
http://amazon.com/o/asin/0321349601

This is an example of how high the bar needs to be raised to make a book worthwhile.

u/Nezteb · 11 pointsr/C_Programming

Some physical book recommendations:

u/incogsteveo · 10 pointsr/psychologystudents

I've always had a knack for the stuff. When I TAed graduate classes I found this book to be helpful in explaining some advanced statistical concepts in plain language. If you are specifically learning to use the SPSS program, this book is by far the best. Good luck!

u/cabbagerat · 10 pointsr/compsci

Start with a good algorithms book like Introduction to algorithms. You'll also want a good discrete math text. Concrete Mathematics is one that I like, but there are several great alternatives. If you are learning new math, pick up The Princeton Companion To Mathematics, which is a great reference to have around if you find yourself with a gap in your knowledge. Not a seminal text in theoretical CS, but certain to expand your mind, is Purely functional data structures.

On the practice side, pick up a copy of The C programming language. Not only is K&R a classic text, and a great read, it really set the tone for the way that programming has been taught and learned ever since. I also highly recommend Elements of Programming.

Also, since you mention Papadimitriou, take a look at Logicomix.

u/EngineerBill · 10 pointsr/pebble

> 3) is it hard to program your own apps? I know a bit
> about programming (limited experience in college).
> Would I be able to pick it up easily?

Don't see anyone answering this part of your question so I'll take a shot at it:

The Pebble is programmed in C, which is not the simplest language to learn, but it's certainly doable and once you master it you'll be in awe of what it can do. It's the programming language of choice for small footprint embedded systems, so you'll find this a useful skill in the long run, even if it's just to understand what others have to do to make your app a reality.

If you've never programmed in C it's probably best to get a book and start reading. I started with Kernighan & Ritchie's The C Programming Language -> and still feel it's the Bible from which all others are derived. Of course, if you under 25 and don't know what a book is, you can always hike off to the Google and start searching "C tutorial").

Pebble Central will provides you with an SDK with all the libraries you need to access Pebble features (e.g. User Interface, timers, comm to/from the watch, etc) but to make this work you'll also need a dev environment to hook all this up to your code.

The traditional/"hard" way to code for Pebble is to set up the Pebble dev environment on your computer and use command line tools to edit/build your app. For this you'll need a copy of the Pebble SDK and a Linux/MacOS machine Inexplicably, Pebble development is not currently supported under Windows, although if you're a real keener you can set up a virtual machine, install Linux and fake it. If you want to go this route, Google "Pebble Vagrant development" and click on the first link okay, if you're really lazy you can click here ->.

Note: I've tried the Vagrant/VirtualBox VM route - trust me, it's currently so poorly documented as to be a true pain in the ass. Not recommended if you can avoid it...

Which brings us to the other alternative. Katharine Berry, an MIT student who apparently dabbles in things Pebble in her spare time, has produced the site Cloudpebble.net ->. This is a fully integrated IDE, with GitHub support and built in SDK. This really does simplify the task of building Pebble Apps, although at the expense of some privacy, as your code lives on somebody else's server. This is no problem if you're developing open source apps or simply teaching yourself but would probably be an issue for commercial developers. Still, I can attest to how much easier it makes things if you're primary focus is on getting your first app done. I love it and recommend it highly.

Whichever approach you take, you'll find the Pebble Central developer site a useful place to hang out. It's got the online docs, links off to developer forums and more. [Pebble Developer Central is located here ->] (http://developer.getpebble.com/).

There are a few examples of programs out there you can use as tutorials and/or starting point for your own designs. I found Katharine Berry's peapod App (a music control app for iOS) to be a good starting point and her httpebble App is the definitive tool for accessing web resources. Her GitHub home is here

I've also written a couple of Pebble Apps and turned them lose under the MIT License (free for reuse if attribution is preserved). My Tempus Fugit App was (I believe) the first to provide multitasking capability, as well as stopwatch, timer a "meeting cost calculator" and multiple watchfaces all in a single app. Source code for this is available here I made an effort to comment the code to help folks figure out what's going on, so hopefully this will help you get started with your own app.

So that's a quick tour of what it takes to get started. Please feel free to post follow-up questions and I'll do what I can to fill in the missing bits...


u/gorset · 10 pointsr/programming

Ok, let's see. A few quick points:

Rooted in in standard, everyday mathematical notation? public static final volatile interface abstract class transient inner class inner anonymous class objects values boxed values..... etc...

Java Generics has drawn heavily from the functional programming camp which is based on lambda calculus. See google tech talk: Faith, Evolution, and Programming Languages

Extremely easy to read and understand? Go read Java Puzzlers and Effective Java to see how many easy mistakes you can make.

Static types enables blablabla...? Not possible without static typing...? Does he realize that tools like Eclipse grew out of a smalltalk project and that smalltalk pioneered automatic refactoring ages ago? Smalltalk is one of the most dynamic language around, and it's more than 30 years old.

Most bugs are found at development time with java? That's not my experience :-)

Simple puzzle: for which values for someInt does this code fail?
int myPositiveInt = Math.abs(someInt);
assert myPositiveInt >= 0;

u/Nwallins · 9 pointsr/programming

The Common Lisp textbook used at Tulane.

u/tooz · 9 pointsr/programming

The Little Schemer - Has to be one of my favorites

u/RussJancewicz · 9 pointsr/linux

People might argue that you really don't need to learn C. They are lying to you. Go buy this read it over the summer, it will do nothing but help you with anything else you ever decide to code in even if you never touch C again.

http://www.amazon.com/C-Programming-Language-2nd-Edition/dp/0131103628

u/Nergalwaja · 9 pointsr/learnprogramming

As someone who also has been looking to delve deeper into C for a better understanding of the language and programming in general, I would recommend The C Programming Language, 2nd Edition by Kernighan and Ritchie.

https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628

While it's not a huge tome of a book, the amount of material and exercises is invaluable, and I've learned more in the first 15-20 pages than I've learned googling or from other resources in the last several months. For 35 bucks new, this book is worth it, although it's even cheaper if you rent or buy it used.

u/nsfwelchesgrapejuice · 9 pointsr/cscareerquestions

If you already have an engineering degree then you already know how to study. What experience do you have with embedded? If you don't have any then you should be sure it's what you want before you commit to anything huge.

I think the best way to get a job in embedded systems is to build embedded systems, and not bother with language certifcations. I might be going against the grain here a bit but I would suggest starting to dip your toes into embedded systems by buying an arduino and messing around with it.

Arduino gets a lot of flack for being "not real" embedded systems, and while it's true nobody is going to hire you because you can make an impressive arduino project, IMHO it's a great introduction to what embedded is about. The hardware equivalent of "hello world" is blinking an LED. If you are serious about learning then you will quickly outgrow the arduino, but you can always throw away the bootloader and try to program the ATmega with bare metal gcc and avrdude.

I don't know what you already know nor how you feel about math, but things you will want to learn include:

  • Analog electrical theory, DC and AC, resistance/capacitance/inductance. Understand basic circuit networks and input vs output impedance. Hopefully you remember complex numbers and frequency response. You don't need a lot of circuit theory but you will need to understand what a pull-up resistor is and why it's necessary. Depending on your math background you can get into filters, frequency response, fourier analysis. A good introduction here might be www.allaboutcircuits.com

  • Digital theory, starting with boolean algebra, logic gates, adders/multiplexers/flip-flops, all the way up to computer architecture. I like this book because it has a very holistic approach to this area https://www.amazon.com/Digital-Design-Computer-Architecture-Second/dp/0123944244/ref=sr_1_1?ie=UTF8&qid=1494262358&sr=8-1&keywords=harris+digital+design

  • Linux, C. Linux and C. You need to understand pointers, and the best way to understand C is to understand computer architecture. If you're not already running Linux, install linux, as well as gcc and build-essential. Start learning how to manipulate memory with C. Learning about computer architecture will help here. My favourite book on C is one of the classics: https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628/ref=sr_1_1?ie=UTF8&qid=1494262721&sr=8-1&keywords=the+c+programming+language

    If you get this far and still want to become an embedded systems engineer then you're doing pretty well. I would say just try to build projects that utilize these skills. Maybe you can use your mech background to build a robot and then design the software to support it. Get used to reading datasheets for parts, and imagining what the digital logic inside looks like. Get used to searching google for answers to your questions.
u/AladdinP · 9 pointsr/C_Programming

C is good to learn as a beginner, although it is an unforgiving language. If you can write C, you will be able to learn the vast majority of other programming languages in common use today with a very small learning curve.

Any CS department worth anything is going to have you write in low level languages at some point, especially C and assembly.

To get started, you're going to need a good C compiler - I recommend GCC. The C Programming Language is also a priceless resource for anybody interested in learning C. Finally, although this is optional, you should learn to use a "serious" text editor, such as emacs or vim.

u/inequity · 9 pointsr/gaming

That's awesome. My recommendation would then be to apply to the school, study the hell out of your mathematics, and start learning C. (I'd recommend getting familiar with Cygwin and GCC, reading C Programming by K.N. King and trying to work through this.)

Good luck!

u/1000Parsecs · 9 pointsr/gamedev

If you've never programmed anything before and you really want to learn coding (if it's your priority) instead of rushing out your first game, I think LÖVE is pretty great for that. You get to learn Lua and an awesome framework. There's also Phaser, which you can learn JavaScript or its variants with it. JavaScript is probably more widely used than Lua because of the World Wide Web.

And when you're done with those, you can try to learn Java and use libGDX, or C# and Unity.

GameFromScratch.com has plenty of tutorials to get you started.

When you've decided you want to be an ultra low-level programmer, buy The C Programming Language. Learn the basics of C, and then follow Handmade Hero.

When you're done with that you're probably on your way to become a godly programmer. You'll probably know how to do some assembly and machine code by then.

But first, you're gonna need lots of discipline to even get to anywhere.

There are no shortcuts.

If you just want to make a game, however, GameMaker and Construct 2 are pretty awesome!

u/jeykottalam · 8 pointsr/compsci

Introduction to Algorithms by CLRS

TAOCP is a waste of time and money; it's more for adorning your bookshelf than for actually reading. Pretty much anyone who suggests TAOCP and is less than 55 years old is just parroting Standard Wisdom™.

Godel, Escher, Bach is a nice book, but it's not as intellectually deep in today's world as it was when first published; a lot of the memes in GEB have been thoroughly absorbed into nerd culture at this point and the book should be enjoyed more as a work of art than expecting it to be particularly informative (IMO).

If you're interested in compilers, I recommend Engineering a Compiler by Cooper & Torczon. Same thing as TAOCP applies to people who suggest the Dragon Book. The Dragon Book is still good, but it focuses too much on parser generators and doesn't really cover enough of the other modern good stuff. (Yes, even the new edition.)

As far as real programming goes, K&R's The C Programming Language is still unmatched for its quality of exposition and brevity, but these days I'd strongly suggest picking up some Python or something before diving into C. And as a practical matter, I'd suggest learning some C++ from Koenig & Moo's Accelerated C++ before learning straight C.

Sipser's Introduction to the Theory of Computation is a good theory book, but I'd really suggest getting CLRS before Sipser. CLRS is way more interesting IMHO.

u/csp256 · 8 pointsr/cscareerquestions

Good news is you have previous experience and C is a very simple language.

Learn C The Hard Way has some weird shit in it (wtf does "make is your Python now" even supposed to mean?) but it is largely good and do tend to recommend it despite the warts.

Really though, why not go straight to the source?

Just make sure you master pointers. It is really useful to understand what memory is on a physical or near physical level to understand pointers. It is one of those concepts that makes instant sense if you come from a hardware point of view, but can trip up newbies with a software point of view.

u/CausticInt · 8 pointsr/C_Programming

Read the sidebar.

If you haven't had programming knowledge before, then The C Programming Language by Dennis M. Ritchie and Brian W. Kernighan is right up your alley.

u/Updatebjarni · 8 pointsr/learnprogramming

K&R is the book for C, especially if you have prior programming experience.

u/headbox · 8 pointsr/italy

Il mondo della programmazione è incredibilmente vario, ti consiglio di cominciare con qualcosa che stuzzichi la tua voglia di fare, potrebbero essere le applicazioni web, oppure sviluppare su android o iphone, come la programmazione di videogiochi oppure realizzare un programma per windows o per linux.
Una volta capito cosa ti piacerebbe provare indirizzati su qualche tutorial veramente basilare, e impara facendo.
Se dovessi indicarti un linguaggio da cui cominciare non avrei dubbi: il C.
Non C++ mi raccomando ma il C puro.
Esistono diversi testi incredibilmente validi e oltre alla Bibbia ti consiglio di farti un giro su amazon per cercare qualche introduzione a qualche argomento o linguaggio specifico, tipo "coding for dummies" ecco.
Il python potrebbe essere un linguaggio buono per cominciare a capire, oppure il javascript a livello base.
Quindi in sostanza io ti consiglio di seguire due strade parallele allo stesso tempo, da una parte di fai un pò di culo con le basi, quindi imparando il C, dall'altra puoi divertirti a sperimentare con le tecnologie più recenti. Ad esempio su codeacademy puoi già cominciare a fare pratica di javascript (penso ci siano altri linguaggi disponibili).
Gli argomenti base che dovresti cominciare a studiare riguardano la programmazione procedurale ad oggetti.
Esistono altri paradigmi di programmazione come ad esempio quella funzionale ma al momento lasciala pure stare.
Ovviamente tutto in inglese, mi raccomando.

u/solid7 · 8 pointsr/learnprogramming

> I'm taking a Unix class in c/c++.

Those are two very different things. Please clarify.

> We are using the book by Sobell. I want to ask if I should read the book?

Uh.. if it's required for your class, yes you should obviously read it. If you are looking for supplemental material, I'd suggest:

u/cyanippus · 8 pointsr/france

La plupart des formations t'apprendront rien d'utile mais prendront volontiers tes thunes.

Sinon t'as le CNAM, c'est bien, si tu veux à tout prix un vrai diplôme (ça aide à trouver le premier taff).

Tu peux aussi faire ça en solo :

  • Installe toi un Linux (VM ou dual boot, mais si tu veux t'y mettre à fond fais en ton OS principal).

  • Si tu sais pas quel système choisir, t'as le choix entre Ubuntu (facile), Debian (le must et pas si difficile) ou Arch Linux (tu vas en baver au début mais c'est ultra formateur).

  • Refais tout ce que tu faisais sur ton système actuellement mais avec Linux et les outils du libre.

  • Tu peux aussi réviser et passer la LPIC 1 en parallèle avec un livre ou des ressources gratuites.

  • Maintenant que tu connais la ligne de commande, bash, quelques services basiques et comment les gérer, apprends un langage de scripting type Python.

  • Apprends à te servir de Git.

  • Tu veux devenir dev ? Apprends le C.

  • Trouve toi un projet qui t'intéresse sur GitHub et essaye d'y participer.

  • Si le C ça t'a vraiment plu, tu peux essayer de participer au développement du kernel.

  • Si t'aime bien Linux et ses distros et que tu veux en savoir plus sur ce qu'il y a sous le capot, tu peux créer ton propre système.

  • Suis r/linux et r/programming sur reddit pour rester dans la boucle, y'a pleins d'autres sous reddit pour débutant aussi en cherchant un peu.

    Bref si tu fais rien que la moitié de ce qu'il y a dans la liste t'es facilement employable comme admin sys en apprenant quelques bases des réseaux . Avec python et de la virtualisation en plus t'es en chemin pour devenir devops (l'un des profils les plus recherché sur le marché).

    En plus tu seras plus compétent que la majorité des bonhommes sortis de formations privées à la noix.
u/vagif · 8 pointsr/programming

We need a book like The Little Schemer, but for haskell.

u/firesofmay · 8 pointsr/compsci

If i had to suggest one book to you I'll suggest buy "The little schemer". Take a pen and a notebook with you. Keep the laptop aside and solve it on paper. Don't do anything else. Read it, solve it on paper then rest and think about what you just learnt. This book will change the way you think about computation if you have never seen any functional language before.

Oh and the book is in Socrates style, so you'll not feel you are just reading a book you'll feel you are talking to a master and having a dialogue with him. Some people can't get that style. It worked wonders for me.

Give it a shot. And pleasure is mine :)

Ref: https://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992

u/mxyzptlk · 8 pointsr/programming

The Little Schemer takes you from zero? to meta circular interpreter in 10 chapters of questions and answers.

u/dropafew · 8 pointsr/scheme

I reccomend the SICP book and SICP Video Lectures taught by Gerry Sussman, who is one of the creators of Scheme.

Why?
Higher-order procedures (Lecture 2A), Metacircular Evaluator (Lecture 7A) are simply badass if you've never been exposed to them.

Also, pick up a copy of The Little Schemer

Why?
I think the book does a good job of covering the mind-blowing [for me] concepts of continuations and the applicative order Y-combinator

You can find some in-the-browser Scheme interpreters too like this one:
http://repl.it/languages/Scheme

u/mhd · 8 pointsr/programming

Friedman & Felleisen Little Schemer seems noteworthy. Unorthodox, but nicely done.

And while I think that Meyer's technical writing isn't exactly the best, Object-Oriented Software Construction has a nice visual layout and is one of the few computer books that uses color effectively.

u/pjmlp · 8 pointsr/java

You missed:

Filthy Rich Clients

http://www.amazon.com/Filthy-Rich-Clients-Developing-Applications/dp/0132413930

Not so relevant now that JavaFx is here, but still a good way to understand how to properly write Swing code that doesn't put Java to shame.

Java Concurrency in Practice

http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601

A must read for anyone writing multicore code on the JVM.

u/shvr · 7 pointsr/C_Programming

Read C Programming: A Modern Approach by KN King. It's one of the best introductory C books available.

u/Wiggledan · 7 pointsr/C_Programming

I've been self-teaching myself C through various books/courses/series the last few months (I'm still not that great), and so I have some suggestions about good places to start learning.

Books:

  • The C Programming Language AKA "K&R" by developers of C - It's short/concise and simple, but covers the whole language (because there's not that much syntax to cover), and tons of people swear by it like a bible.
  • C Programming: A Modern Approach by K. N. King - This book is much larger and more in depth than K&R, with around 800 pages and lots of examples and exercises. It's essentially a college textbook and is actually used in colleges.
  • Learn C the Hard Way by Zed Shaw - This one is free and online. I like it because it focuses more on you figuring out things on your own by breaking the code in various ways and having an absolute understanding of every line, rather than just having you copy everything and telling you how it works

    Courses/Videos:

  • [Harvard CS50x](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x) - An awesome, free online course with high production lectures, and helpful videos/tips if you get stuck. It mostly covers C, but it does go into other things (that are still worth knowing) at the very beginning and end.

  • A Free Course for C Beginners by Carl Herold - Not really a full course, just most of the videos. I found this very recently, and the original website doesn't exist anymore. It goes at a very relaxed pace and explains things incredibly well in a way that you will remember. These videos really solidified/helped my understanding of binary, hex, and pointers. I highly, highly recommend it over anything else if you're just starting out.
  • Handmade Hero by Casey Muratori - You can watch and follow along with this guy as he programs a video game from scratch in C. He streams every weekday, usually has a Q&A after, and puts every video up on YouTube. The series starts off with a sort of rushed intro to C, and honestly the whole thing is always at a fast pace and can feel complicated. But that's what it takes to make a game from scratch, and he takes time to explain what everything means. Plus it's mostly all very interesting and useful.

    Resources:

  • Google - google everything, or Bing it, I don't care
  • Stackoverflow - someone probably asked your question before, especially with C
  • /r/dailyprogrammer - Great daily challenges. These are like working out your programming muscles.
  • /r/learnprogramming - Occasional posts about C, and you can ask/find your questions here as well
  • Online C Compiler - A convenient compiler that you can use anywhere to play with simple programs using C standard library functions.

    Other than that, you should maybe look into trying out Linux, because it's more developer-friendly than Windows (such as having a C compiler out of the box). And the whole kernel and many core components of the OS are written in C, which are all usually open source, so you can learn from, and contribute to them.

    Good luck, friend.
u/dzjay · 7 pointsr/learnprogramming

Check the syllabus and get a head start on the topics covered. My two favorite C books are C Programming: A Modern Approach and C Programming Language. The first one is for absolute beginners, while the second one is for someone who already knows the basics of programming.

u/myevillaugh · 7 pointsr/opengl

I suggest disconnecting the two. You need to have a firm grasp on C or C++ programming before going into graphics. It's a long road, but worth it.

This book is considered the authoritative source on C programming, written by the creator: http://www.amazon.com/C-Programming-Language-2nd-Edition/dp/0131103628

Here are some text based tutorials that I used to learn OpenGL recently.

http://openglbook.com/the-book/

http://www.swiftless.com/tutorials/opengl4/1-opengl-window.html

http://en.wikibooks.org/wiki/OpenGL_Programming

Good luck!

u/schreiberbj · 7 pointsr/UIUC
  1. Start looking at basic programming, specifically in C. There are a lot of good tutorials and books. I like this one.

  2. Your first year, the hardest class will be ECE 220 in the Spring. The hardest overall are ECE 385, 391, and 411, and CS 374. Don't worry about those yet.

  3. Look at scheedule for scheduling. Be sure to take ECE 120 in the Fall. The rest of your schedule doesn't really matter. It will probably be calc, chem, and rhet.

  4. Breathe.

  5. Yes. Plenty of engineers party.

  6. Study, especially in a group. Everyone is in the same boat, so learn to work together.
u/chonglibloodsport · 7 pointsr/technology

If you're looking to learn C, get K&R.

u/SADISTICBLUE · 7 pointsr/Malware

+1 for mentioning malwareunicorns Reverse Engineering Malware 101 course. I'm pretty excited about starting that after I'm done with some Powershell stuff.

Books for: /u/Kreator333 and /u/curiousdoggo

C/C++:

  • The C Programming Language (2nd Edition) - K&R is fine for fundementals.

  • Pointers on C the sections on pointers are phenomenal. The author explains them in great depth with lots of examples.

  • TBH I haven't learned C++ yet but this definitive guide/list looks promising.

    Assembly/C:

  • Hacking The Art of Exploitation 2nd Edition. Mainly the chapter on programming which pretty much has everything you need. It can get you started with C and ASM and how they compare by stepping through examples using GDB, etc.. Read this if you really want to hit the ground running and then jump into those other books you mentioned OP.

    Also OP while your learning the basics here do as many examples as you can. Don't just read it and assume you know everything. For C you can try coding a bunch of classical ciphers and for ASM, debug the assembly of simple programs in gdb. (check out godbolt) or try coding a echo client/server in Nasm.
u/pdoherty926 · 7 pointsr/C_Programming

I haven't read either of those, but I did enjoy and find a lot of value in K&R and 21st Century C.

u/TheIndoIrishman · 7 pointsr/ireland

Any book on technology. Like this one. Oh yes, most Indians wanting out are settled in the US or the UK or Australia nowadays. I'm mostly a lurker here and on reddit. I don't understand most of the posts, especially the ones on politics, although I'm learning new terms like Dail and Taoiseach and I'm pretty sure I don't know how to pronounce these words. I'm trying to participate in self posts like these.

u/ironmaiden947 · 7 pointsr/learnprogramming

The C Programming Language by K&R is probably the first book people recommend.

Learn C The Hard Way is more hands-on, but if you already know other programming languages youll be fine.

I dont know about any interactive courses, but HackerRank has lots of challanges you can solve in a multitude of languages (including C) which is pretty close to CodeAcademy. Keep in mind that it gets hard pretty quick, so it is better to be somewhat comfortable with your chosen language before doing them.

u/chhhyeahtone · 7 pointsr/learnprogramming

If you want to know what programming is like, try Stanford's CS101 course. It's very basic but gives you a taste of what you can learn. You can breeze through it in a week or two. Don't worry about memorizing the code, just focus on the concepts.

If you finish that and enjoyed it, you can try M.I.T's 6.00 1 course. It teaches you Python, one of the easier programming languages to start with. This course is longer than the first one and is an actual programming course. It recommends the book Introduction to Computation and Programming Using Python if you need it.

After that, I would say give Harvard's CS50 online course a go. This course teaches you the C language and is easier to complete if you did the first two courses. This course recommends the books: The C programming language book or C programming: an absolute beginners guide for a more beginner friendly (and budget friendly) option.

Good luck and have fun

u/brettmjohnson · 7 pointsr/AskComputerScience

Pick up a copy of K&R (ANSI edition). It is thin and the definitive reference. You can burn through the exercises pretty quickly, especially if you have used Java, C++, or C#.

Ridiculously-priced hard copy (IIRC, I paid about $20 for my copy.)

E-book PDF

u/CastleSeven · 7 pointsr/learnprogramming

The C Programming Language is what I'm reading now.

http://www.amazon.com/exec/obidos/ASIN/0131103628/ref=nosim/schmcreadesis-20

u/Neui · 7 pointsr/C_Programming

I would make the logo a blue C, like in the title page of The C Programming Language: https://i.imgur.com/yMpmgEp.png

u/reposefulGrass · 7 pointsr/learnjava

There are tons of resources in many different formats of many different qualities.

On the sidebar to the right, there are quite a few. You should pick the format you're most comfortable with -- book, video, course, etc.

As I've read a few books, for absolute beginners, Intro to java: Comprehensive was pretty good. Very easy to get into to.

Thinking in Java or The Java Reference Book are pretty good for people who already know the concepts of programming.

I haven't watched videos for learning java or taken any courses, so this is all I can give you.

EDIT:

I've found a playlist on YouTube, I've only watched the two first videos, but they seem great.

As a beginner, you'd first have to install Java and also a tool to easy use java -- an IDE (Integrated Development Environment) for example. Plenty of YouTube videos covering that.

Here is a course that alot of people seem to like and recommend: MOOC

Lastly, some advice: Stick through with it if you really want to program. Learning to program at first is the hardest part on the journey.

u/cparen · 7 pointsr/compsci

The little schemer and the seasoned schemer. They start feeling like a really easy, gentle intro to programming. The dialog presentation style is amusing, and some serious Socratic style teaching going on about programming with an algebraic bent, and the second book builds up to a surprise ending, a rather interesting program -- I won't spoil the surprise for you.

u/Andrew_Hager · 7 pointsr/learnprogramming

Try the book "The little schemer"

The Little Schemer - 4th Edition https://www.amazon.com/dp/0262560992/ref=cm_sw_r_cp_apa_i_OST2Db7M254TR

I couldn't wrap my head around anything past very basic recursion. Once I had completed this book, I felt like I had a fairly solid understanding of the topic. Well worth the money, in my opinion.

Edit: As a side effect, you learn a little scheme which happens to be a very fun language.

u/zck · 6 pointsr/lisp

Well, it's still in print. And it's worth getting.

u/Grel · 6 pointsr/learnprogramming

While I have not read it, I hear great things about The Little Schemer

The Little Scheme on amazon

I used SICP which can be found here. It is really great!

u/fact_hunt · 6 pointsr/java

For concurrency you can't go wrong with Java Concurrency in Practice

u/dafrito · 6 pointsr/learnprogramming

"Java Concurrency In Practice" is the text that I would recommend.

http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601

u/spilled_water · 6 pointsr/C_Programming

You would love C Programming: A Modern Approach.

The book gets into some pretty advanced stuff. From MAKE files, to programming idioms, to how to organize your code.

It's a really dense book, but super well organized, super clear for almost all topics (only two or three topics I needed to google), and most importantly very thorough.

I was reading the book to refreshen my C. Out of curiosity, I looked up common or important interview questions on embedded C, and pretty much the book nailed it down.

u/EricTboneJackson · 6 pointsr/learnprogramming

> all of the courses on coding there will be using C [..] should I start learning C so that it'll be easier to follow classes for exams next year?

C is a completely different animal and learning more Python will do very little to help prepare you. If your intent is to get ahead of the game so you'll get the most out of your courses, then starting C now will help more than continuing with Python, IMO.

That said, C is much more difficult to learn, and you might need the help of an instructor more there. It really depends on the person. I learned C on my own from K&R. YMMV.

u/adriftatwork · 6 pointsr/engineering

Learn 'C' and 'Python'.

'C' is the lingua-franca of computers.
Start with K&R's 'The C Programming Language'.

Python as a high level language for getting things done. 'Dive into Python' is a good start.

u/JAPH · 6 pointsr/learnprogramming

Introduction to Algorithms by CLRS. Used in almost every algorithms class I've heard of, and a great reference book. It's about 1300 pages, so don't try to read straight through it.

C Programming Language by K&R. This is a C programmer's Bible.

Design Patterns by the Gang of Four

This is a little more of a topic book, but The Art of UNIX Programming by Raymond.

These are all either pretty common, or almost essential. You'll probably see these in your curriculum anyway, and you should. These are a good cornerstone.

u/Atanvarno94 · 6 pointsr/ItalyInformatica

Io direi di iniziare con il C.

Il manuale che consiglio(io) è, solamente, questo:

The C Programming Language: ANSI C Version

u/softwaredev · 6 pointsr/ECE

On top of what any other comment recommends here I also recommend that you learn C very well (structures, unions, pointers, bitwise operations, static, extern, volatile, etc)

This is my favorite C book
http://www.amazon.com/C-Programming-Modern-Approach-2nd/dp/0393979504/ref=sr_1_1?ie=UTF8&qid=1415412105&sr=8-1&keywords=modern+C

also read or skim over the manual of whatever compiler you choose, you will sometimes be stuck and remember that your specific compiler's features offer the solution to your problem.

u/Gaff_Tape · 6 pointsr/ECE

Not sure about EE-related topics, but for CE you're almost guaranteed to use these textbooks:

u/Svsk71 · 6 pointsr/AskProgramming

"Thinking in java" is the best book.
Thinking in Java https://www.amazon.in/dp/0131872486/ref=cm_sw_r_cp_apa_i_T9wrDbHHP4R1A

u/Constantine_V7 · 6 pointsr/cscareerquestions

This list isn't about "coding" per-se but is more focused on concepts, sw.en., practices, etc.

Thinking in Java is one of my favorites, the definitive introduction to object oriented programming and design.

Code Complete, Don't know anyone who hasn't heard of this so far

The Pragmatic Programmer: From Journeyman to Master

u/CuttingEdgeRetro · 5 pointsr/learnprogramming

I learned it from this book around 25 years ago:

https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628


But you can probably save the money and just use any tutorial on the internet. I'd recommend just starting out with C++ though. When object oriented programming went mainstream, I had a lot of trouble switching over to the new mindset. You're better off learning OO from the beginning.

u/lordlicorice · 5 pointsr/UMD

Just learn C. There are tutorials all over the place, or you can buy http://www.amazon.com/The-Programming-Language-Brian-Kernighan/dp/0131103628

u/HedonicLife · 5 pointsr/explainlikeimfive

ATLien325's comment explains that terminology in a pinch, but it's not really going to get you very far on your way to learning how to hack. Your best bet would be to pick up books like this, this, and this. Then you'll have an idea of how programs, file systems, and networking work behind the scenes and you are much better situated to begin to learn how to hack them.

You're also going to need to learn how to effectively use a search engine.

u/Jacobbev · 5 pointsr/learnprogramming

I have been working through C Language: 2nd Edition have been having a few problems understanding a few things but good book!

u/ab57 · 5 pointsr/C_Programming

I had no real programming experience before I started C as part of a university course. Thankfully, my first course was on the language itself so the problems were all based around understanding the fundamentals of C itself (not on the theory of algorithms).

I know some people here are criticising it as a first language choice, and I'll admit that I am in two minds about recommending it. However, I'm struggling to think of a better choice.
So I'll assume that isn't up for debate or maybe even the class recommends it?

Unfortunately I have never taken a relevant MOOC in this area. I have looked at several books however:

I can't avoid mentioning The C Programming Language by Kernighan and Ritchie aka K&R - if only to say I dont recommend it. I own a copy and feel its not really appropriate for a complete beginner. Its not a book you can sit down and read through. Its basically a reference manual, to be used to help provide context for a particular problem. Unfortunately, at the start I would know what I wanted to achieve but didn't know the correct terminology to describe it, in which case the index becomes useless (even Google can't work these types of miracles).

Absolute Beginner's Guide to C by Greg Perry is however very readable. Its probably a little too verbose for someone who has prior programming experience - as the title suggests its written for the absolute beginner. It should be ideal for you however. If you are prepared to go for a book rather than a MOOC I highly recommend it.

u/maverick_235 · 5 pointsr/learnprogramming

If you want to learn C - you should read K&R's The C Programming Language (the bible for C) and do all the exercises.

Also - the first half of CS50 is in C. r/cs50

u/dotchris · 5 pointsr/learnprogramming

Buy K&R and do the exercises.

You may also find /u/_Madk's list of projects interesting. It focuses a lot of games, if you're into that. A lot of those are pretty easy to show to non-programmers, which is always nice. (ex. Dad can appreciate Tetris more than your Red-Black Tree)

u/devnull5475 · 5 pointsr/java

Immediate, unequivocal answer: Thinking in Java by Bruce Eckels.

u/TotalPerspective · 5 pointsr/bioinformatics

Here are some books that I feel have made me better professionally. They tend toward the comp sci side, some are more useful than others.

  • Bioinformatics: An Active Learning Approach: Excellent exercises and references. I think most chapters evolved out of blog posts if you don't want to buy the book.
  • Higher Order Perl: I like perl to start with, so your mileage may vary. But learning how to implement an iterator in a language that doesn't have that concept was enlightening. There is a similar book for Python but I don't remember what it's called. Also, you are likely to run into some Perl at some point.
  • SICP: Power through it, it's worth it. I did not do all the exercises, but do at least some of the first ones to get the ideas behind Scheme. Free PDFs exist, also free youtube vids.
  • The C Programming Language: Everyone should know at least a little C. Plus so much has evolved from it that it helps to understand your foundations. Free PDFs exist
  • The Rust Programming Language: Read this after the C book and after SICP. It explains a lot of complex topics very well, even if you don't use Rust. And by the end, you will want to use Rust! :) It's free!

    Lastly, find some open source projects and read their papers, then read their code (and then the paper again, then the code...etc)! Then find their blogs and read those too. Then find them on Twitter and follow them. As others have said, the field is evolving very quickly, so half the battle is information sourcing.
u/Drcool54 · 5 pointsr/UIUC

Okay I came in to school like you with very little programming experience. Probably even less than you since I only messed around on my TI. I am going to assume you're only taking ECE110 first semester. If not I recommend getting in as soon as you can. They may give you some crap about it depends on last names, but it doesn't really matter. After a certain point its open to everyone.

Either way, programming in ECE doesn't really start until you take ECE190 which is all C programming and a very simplified assembly language for educational purposes. Like I said I went into the class with practically zero programming experience and still did very well in the class, so don't let anyone scare you on that. If you put the time aside to read the book (really helpful in 190) and doing your MPs/ask the TAs questions you will do fine.

I wouldn't fret too much over the summer with learning stuff, but I would definitely recommend C over Python. Python is pretty easy to pick up, but its also very high level. If you need an introductory language to get familiar you can try python for a bit, but I'd go with C after that. It is worth noting that the other two required programming class you have to take (CS 225 and ECE 391) are C++ and C/x86 respectively. So learning C should definitely be your focus.

I recommend the book written by the creators of the language. The book the school requires is pretty good too actually and would give you a better idea of what to expect. They're kind of pricey, so its your call how you want to get them. As a heads up, codecademy does have Python, but not C as far as I recall. I've never used lynda do I can't comment on them C Book ECE 190 Book

I honestly wouldn't fret too much about it all. Enjoy your summer, depending on how busy your schedule is next semester you can probably set aside some time now and then to study some languages. If you have any more questions I'd be happy to answer.

u/Cole119 · 5 pointsr/learnprogramming

K&R is the go-to C book, IMO.

u/xorxorxorswap · 5 pointsr/rutgers

Read "The C Programming Language" ( https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628 , it's also on libgen)

​

Make sure you're cool with data structures (most of them are important, but hash tables are very key because they form the basis of caches, something you'll have to learn)

​

Look up some basic digital logic (up to flip-flops and d-latches, and cover some FSM too if you have time)

​

I don't really know of any great resources to self-study assembly, so you'll have to just make the most of the lectures on that.

​

Prof Nagarakatte is super fair imo. Multiple project extensions, a multitude of extra credit opportunities (I believe it totaled to something around 15% of the total course grade with max extra credit when I took it), and no curve- you just need an 85% (after extra credit is applied) to get an A, which is nice. The best thing about him, though, and something I've never seen anywhere else, is that the TAs know what they're doing. He tries to get his own grad students TA positions, and so he's got a great working relationship with them. Go to recitation, because the TAs know what's up and will often write out significant portions of the projects for you. In my opinion, the course wasn't particularly easy, but an A is definitely achievable as long as you put in the effort. His lectures are pretty fast, but the slides are online and fairly self-explanatory, so try to go over them after each lecture if you can.

u/CameronNemo · 5 pointsr/linux

Haha, sorry it is a commonly referenced book I did not even think about it.

Brian Kernighan and Dennis Ritchie (early developers / creators of UNIX) wrote a book called The C Programming Language. Make sure you get the second edition though.

u/joshstaiger · 5 pointsr/reddit.com

I'd also recommend Paul Graham's own ANSI Common Lisp: http://www.amazon.com/gp/product/0133708756/

I liked it slightly better than Practical Common Lisp for getting the Lisp way of thinking across... Not as much, um, practical code, though.

Oh, and if you really want an "aha" experience then there's
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Norvig: http://www.amazon.com/gp/product/1558601910/ which both introduces Common Lisp and takes you all the way up through writing classical AI systems using it.

u/Banach-Tarski · 5 pointsr/Physics

Learn math first. Physics is essentially applied math with experiments. Start with Calculus then Linear Algebra then Real Analysis then Complex Analysis then Ordinary Differential Equations then Partial Differential Equations then Functional Analysis. Also, if you want to pursue high energy physics and/or cosmology, Differential Geometry is also essential. Make sure you do (almost) all the exercises in every chapter. Don't just skim and memorize.

This is a lot of math to learn, but if you are determined enough you can probably master Calculus to Real Analysis, and that will give you a big head start and a deeper understanding of university-level physics.

u/Ownaginatious · 5 pointsr/java

These two are good reference guides despite their age. Lots of good best practice stuff.

u/caryy · 5 pointsr/learnprogramming

In addition to Code Complete 2, which, while very dense, is a compendium of wonderful coding knowledge... I recommend Clean Code by Robert C. Martin.

One of the best books on concurrency that I've ever read is definitely Java Concurrency In Practice it's (obviously) written with Java in mind, but most of the concepts map rather easily to constructs in other languages as well.

The standard for design patterns is still probably Design Patterns (colloquially "Gang of Four")... but I've heard good things about Head First Design Patterns as well, despite the really stupid cover.

u/sanity · 5 pointsr/java

I cannot recommend The Java Programming Language highly enough. It was written by the creator of Java, and it shows. It's the reason I've spent my 12 year programming career using Java.

u/terminus1256 · 5 pointsr/EngineeringStudents

I'd recommend learning Python. It's really simple to transition to for someone who knows MATLAB and it's really useful.

The official Python tutorial here is good: https://docs.python.org/3/

Python 2 is definitely more widely used right now, but Python 3 is the future of the language, so I'd go with learning 3 if I were you.

C is good to learn, you can either try Kernighan and Ritchie (the "bible of C", actually written by the creators of the language), but I hated learning from that book. I picked up this book and it was fantastic. Most online C resources suck ass.

u/DonutDonutDonut · 5 pointsr/promos

Also, "Customers Who Bought This Item..."

"Forbidden Lego: Build the Models Your Parents Warned You Against"

BRB, Christmas wishlist

u/7thSigma · 4 pointsr/Physics

Numerical Recipes is a veritable catalogue of different methods. Depending on what field you're interested in though there is surely a text with a title along the lines of 'Computational methods for [insert field] physics'

u/iwontmakeyoursammich · 4 pointsr/statistics
u/Flamdrags5 · 4 pointsr/statistics

Applied Predictive Modeling by Kuhn and Johnson

Gives good interpretations of different approaches as well as listing the strengths, weaknesses, and ways to mitigate the weaknesses of those approaches. If you're an R user, this book is an excellent reference.

u/vbukkala · 4 pointsr/datascience

There is the second edition (2018) of APM
Check out here:
https://www.amazon.com/Applied-Predictive-Modeling-Max-Kuhn/dp/1461468485

u/Zamarok · 4 pointsr/learnprogramming

C
Books:
The C Programming Language

Haskell
Books:
Learn You a Haskell for Great Good!

JavaScript:
List of Resources:
javascript.crockford.com

u/g4r8e9c4o · 4 pointsr/learnprogramming

Buy and read this book.

u/quentusrex · 4 pointsr/learnprogramming

Probably one of the best books for starting in software engineering: C Programming Language - K&R Used is about $20.

It will frustrate you, and you will begin to hate everything about the book and programming, but if you can learn how to solve problems such as the ones presented to you then you will have a good solid foundation to tackle many other more interesting and useful tasks.

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/blablahblah · 4 pointsr/cscareerquestions

This solution requires some knowledge of how C works. A pointer is a number referring to a point in memory (and memory is one continuous blob of data). A C string is just a pointer to a character- you start at the location given and keep reading until you hit a NUL (character 0). C doesn't have a boolean type, so you use 0 is false and anything else is true. Once you understand those things, it's a fairly straightforward answer- you start at the beginning of the string, increment the pointer (you can literally imagine a finger pointed at a specific spot in a container if it helps) until you reach the end of the string (marked by character 0), then swap the character from the front with the character from the back, moving each pointer towards the middle as you go.

Having enough knowledge of C to implement this solution is different than a general knowledge of algorithms. On the C side of things, you could read something like Learn C the Hard Way, or buy a copy of K&R if you just want something to refer to as you practice. On the algorithms side of things. For the algorithms side of things this is a pretty popular textbook on the subject.

u/hung_kwan · 4 pointsr/hacking

Yeah, sure. Here you go.

u/Sasakura · 4 pointsr/britishproblems

If you're learning C and not C++ I highly recommend picking up The C Programming Language. It's a fantastic introduction to C and unmanaged languages but you do already need to know how to program to get the best out of it.

u/ponchedeburro · 4 pointsr/learnprogramming
u/muchadoaboutninjas · 4 pointsr/ECE

First you need a compiler. IMO the best thing to use is GCC, the GNU compiler, on linux. It will force you to learn how to write your makefiles and you'll get more exposure to linking. If you're committed to windows there is Microsoft Visual studio, but this is not my domain. I remember using an IDE called Dev-C++, a free software, in college and it can compile C. But by sophomore level courses we were using GCC. If you're running Mac OS X you can get GCC using the brew package manager.

Then you need a 'resource' that will help you. C Programming Language, 2nd Edition by Kernighan and Ritchie is an excellent resource. Its dry and to the point and it makes for a good reference later on. I'm sure there are a lot of free online classes and tutorials to get you started as well.

One thing I will say is that C is a great language to learn, but you can't do much with it without a good understanding of data structures and algorithm analysis. I assume you'll be in a systems level (firmware, kernel, driver) of abstraction. Here you have to be resource conscious and usually don't have space for bloated libraries or inefficient routines. That's why an understanding of data structures and algorithms is key to writing efficient code and will take you much further than just understanding the languages syntax and structure.



u/mrstealy- · 4 pointsr/C_Programming

Others have mentioned that this is probably not the route to go with "0 computer knowledge". I would agree with them, but in case you decide that you really must start with C, here is the book. It's the most recommended resource, and it is for a reason.

u/a_bit_of_byte · 4 pointsr/vitahacks

C is a very small language that is easy to pick up, but takes a long time to master. This book is considered the gold standard. Good luck!

u/drunk2407 · 4 pointsr/gamedev

Spend few years with this, then ask questions.

u/reddilada · 4 pointsr/learnprogramming

You'll do fine. You're a physicist, second smartest people in the universe behind the mathematicians :)

Pick up a copy of 2nd edition K&R C and go through it. It's a short book and has everything you need to know about C.

I doubt they are going to throw you in too deep and it's likely they will have some experience with the environment since they seem to be specifying it. That is, you should have a number of tools at your disposal. If you get stuck, just ask someone.

u/Barnonahill · 4 pointsr/programming

That book is generally considered the C Bible, and a great introduction to C. It's worth keeping in mind that their library isn't clear about what functions are insecure, however.

Edit: as /u/mianosm pointed out, I actually meant The C Programming Language is the C bible. (The book can be found online as well.)

u/CSMastermind · 4 pointsr/learnprogramming

I've posted this before but I'll repost it here:

Now in terms of the question that you ask in the title - this is what I recommend:

Job Interview Prep


  1. Cracking the Coding Interview: 189 Programming Questions and Solutions
  2. Programming Interviews Exposed: Coding Your Way Through the Interview
  3. Introduction to Algorithms
  4. The Algorithm Design Manual
  5. Effective Java
  6. Concurrent Programming in Java™: Design Principles and Pattern
  7. Modern Operating Systems
  8. Programming Pearls
  9. Discrete Mathematics for Computer Scientists

    Junior Software Engineer Reading List


    Read This First


  10. Pragmatic Thinking and Learning: Refactor Your Wetware

    Fundementals


  11. Code Complete: A Practical Handbook of Software Construction
  12. Software Estimation: Demystifying the Black Art
  13. Software Engineering: A Practitioner's Approach
  14. Refactoring: Improving the Design of Existing Code
  15. Coder to Developer: Tools and Strategies for Delivering Your Software
  16. Perfect Software: And Other Illusions about Testing
  17. Getting Real: The Smarter, Faster, Easier Way to Build a Successful Web Application

    Understanding Professional Software Environments


  18. Agile Software Development: The Cooperative Game
  19. Software Project Survival Guide
  20. The Best Software Writing I: Selected and Introduced by Joel Spolsky
  21. Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams
  22. Rapid Development: Taming Wild Software Schedules
  23. Peopleware: Productive Projects and Teams

    Mentality


  24. Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency
  25. Against Method
  26. The Passionate Programmer: Creating a Remarkable Career in Software Development

    History


  27. The Mythical Man-Month: Essays on Software Engineering
  28. Computing Calamities: Lessons Learned from Products, Projects, and Companies That Failed
  29. The Deadline: A Novel About Project Management

    Mid Level Software Engineer Reading List


    Read This First


  30. Personal Development for Smart People: The Conscious Pursuit of Personal Growth

    Fundementals


  31. The Clean Coder: A Code of Conduct for Professional Programmers
  32. Clean Code: A Handbook of Agile Software Craftsmanship
  33. Solid Code
  34. Code Craft: The Practice of Writing Excellent Code
  35. Software Craftsmanship: The New Imperative
  36. Writing Solid Code

    Software Design


  37. Head First Design Patterns: A Brain-Friendly Guide
  38. Design Patterns: Elements of Reusable Object-Oriented Software
  39. Domain-Driven Design: Tackling Complexity in the Heart of Software
  40. Domain-Driven Design Distilled
  41. Design Patterns Explained: A New Perspective on Object-Oriented Design
  42. Design Patterns in C# - Even though this is specific to C# the pattern can be used in any OO language.
  43. Refactoring to Patterns

    Software Engineering Skill Sets


  44. Building Microservices: Designing Fine-Grained Systems
  45. Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools
  46. NoEstimates: How To Measure Project Progress Without Estimating
  47. Object-Oriented Software Construction
  48. The Art of Software Testing
  49. Release It!: Design and Deploy Production-Ready Software
  50. Working Effectively with Legacy Code
  51. Test Driven Development: By Example

    Databases


  52. Database System Concepts
  53. Database Management Systems
  54. Foundation for Object / Relational Databases: The Third Manifesto
  55. Refactoring Databases: Evolutionary Database Design
  56. Data Access Patterns: Database Interactions in Object-Oriented Applications

    User Experience


  57. Don't Make Me Think: A Common Sense Approach to Web Usability
  58. The Design of Everyday Things
  59. Programming Collective Intelligence: Building Smart Web 2.0 Applications
  60. User Interface Design for Programmers
  61. GUI Bloopers 2.0: Common User Interface Design Don'ts and Dos

    Mentality


  62. The Productive Programmer
  63. Extreme Programming Explained: Embrace Change
  64. Coders at Work: Reflections on the Craft of Programming
  65. Facts and Fallacies of Software Engineering

    History


  66. Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software
  67. New Turning Omnibus: 66 Excursions in Computer Science
  68. Hacker's Delight
  69. The Alchemist
  70. Masterminds of Programming: Conversations with the Creators of Major Programming Languages
  71. The Information: A History, A Theory, A Flood

    Specialist Skills


    In spite of the fact that many of these won't apply to your specific job I still recommend reading them for the insight, they'll give you into programming language and technology design.

  72. Peter Norton's Assembly Language Book for the IBM PC
  73. Expert C Programming: Deep C Secrets
  74. Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming
  75. The C++ Programming Language
  76. Effective C++: 55 Specific Ways to Improve Your Programs and Designs
  77. More Effective C++: 35 New Ways to Improve Your Programs and Designs
  78. More Effective C#: 50 Specific Ways to Improve Your C#
  79. CLR via C#
  80. Mr. Bunny's Big Cup o' Java
  81. Thinking in Java
  82. JUnit in Action
  83. Functional Programming in Scala
  84. The Art of Prolog: Advanced Programming Techniques
  85. The Craft of Prolog
  86. Programming Perl: Unmatched Power for Text Processing and Scripting
  87. Dive into Python 3
  88. why's (poignant) guide to Ruby
u/MrPowersAAHHH · 4 pointsr/learnprogramming

I made some Python code quizzes that teach by example. The quizzes follow The Little Schemer teaching style.

u/DrStrngeluv · 4 pointsr/lisp

I second Practical Common Lisp, and may I recommend ANSI Common Lisp and The Little Schemer (I know its scheme, but when I did the exercises I did them in LISP).

u/jbos1190 · 4 pointsr/learnprogramming

There is now a 4th edition, which has a different name.

u/khafra · 4 pointsr/programming

Since you're fuzzy on the whole "Turing Complete" concept, I wouldn't start at the toy app level. The best place for you is probably The Little Schemer with javascript transformations from http://javascript.crockford.com/little.html applied (Unless you want to get yourself an actual Scheme implementation, which would be fantastic). Also, if you work through both that, and "Structure and Interpretation of Computer Programs," you'll have super-high nerd cred.

u/GlitteringSkeleton · 4 pointsr/javahelp

I'd start with this article. Finding newer versions of the books mentioned here is going to get you going on the right path. Here's a few I've picked out that I've personally read over the years.

Java: A Beginners Guide - Doesn't really get much better than this as far as an introduction into Java. Clean examples, pretty easy to follow. Would be a great place to start

Effective Java - This has historically been an excellent reference for Java. It's not entirely beginner friendly, but if you have at least a working knowledge of Java it's an excellent book to have around. Note: The link is for the 3rd edition which is coming out soon, I assume it will be as good as the previous editions, but in any case the information from the previous editions is still worthwhile even if there are newer features in Java 7/8/9 which is covered by the 3rd edition

Java Concurrency in Practice - As you become more advanced this book can help guide you along the ways of concurrent operations in Java and pitfalls/issues you'll run into (and how to avoid them)

u/redditor72 · 3 pointsr/Physics

If you're after a solid understanding of math, I recommend learning from actual math books. Keep "mathematical methods" books for reference and review. Some recommendations:

Linear Algebra by Lang

Fundamentals of Complex Analysis by Saff and Snider

Fourier Series and Boundary Value Problems by Brown and Churchill

These books will be significantly more rigorous than Boas, but maybe seeing everything developed carefully will be easier for you to understand.

I don't know where you are in physics, but if you've got any quantum mechanics classes coming up, then I would focus on linear algebra, as it is very important. (And not just the finite-dimensional R^n stuff...make sure you understand vector spaces of possibly infinite dimension over general fields, and C in particular.) For classical mechanics and electromagnetism, vector calculus is probably the most important, but things like Fourier analysis and residue integration can show up anywhere.

u/redditor62 · 3 pointsr/math

Saff and Snider is great for applied complex analysis. In my opinion it strikes a perfect balance between accessibility and rigor for a first course on the subject.

Visual Complex Analysis is another good choice, but it might be a little more advanced than what you're interested in.

The first half of Lang might also be a good choice, but Lang takes a slightly more formal, proof-based approach.

I've also skimmed through Brown and Churchill, which looks quite good but is prohibitively expensive.

Finally, you can find many cheap (~$10) books on the subject by Dover. The only one I've looked at is Knopp, which is quite formal and light on computation, but might be a good supplement. Here's another Dover book with outstanding Amazon reviews.

Complex analysis is both very elegant and very useful. Best of luck with your class!

u/bo1024 · 3 pointsr/learnprogramming

There are different variants of Lisp. One is Common Lisp. A really good book on it is online for free: Practical Common Lisp.

I have heard The Little Schemer recommended for learning Scheme, but I've never done so myself or read it.

u/nsxt · 3 pointsr/functionalprogramming

Your math background really shouldn't be an issue. If you're curious, though, check out this primer on lambda calculus.

Also highly recommended is The Little Schemer, which should fit your bill perfectly as a beginner to functional programming.

u/afmoreno · 3 pointsr/Clojure

The most amazing demo I've seen at a meetup was done with Overtone. Whether or not to pursue Clojure or Python is a matter of taste/inclination. I think it would be really hard a priori to determine it since it requires a fair amount of exposure to decide whether or not you are interested in computing as an intellectual exercise.

If you think you'll end up writing code a fair amount, then this is like any trade: invest in good tools to get professional results. In my opinion, Clojure is the superior tool (compared with Python).

Both Python and Clojure claim Lisp as an antecedent but Clojure has these "killer features":

  • macros: the ability to add new features to the language. One way to program in Lisp is to design a Domain Specific Language so you can interact with your problem using its language, not some arbitrary computer language.
  • literal syntax: think of this as a way to describe sets and other data structures that are core to programming. Here Python is great but Clojure is better!
  • very thoughtful design of its data structures so that you can move up and down a ladder of abstraction to pick, say, the right type of collection for your problem (e.g. a list vs. a vector)
  • functional programming is encouraged and supported with immutable data types. Not having immutable data types makes life really hard because one has to deal with values that change over time. If your domain is music, where time is of the essence (pardon the pun), I would think that immutability would be important to you.
  • Clojure runs on the browser (ClojureScript). This means that you can write all your code in one language (if you end up doing a lot of it, then this matters).

    Python is really nice but after having worked with it for years, I felt that I could do better. Things that pushed me away:

  • Writing DSLs is not the default. Sure, one can use parsers and create a grammar, but this is more like building a programming language instead of a DSL. (Sure, there is method overloading which one can take pretty far...)
  • Immutability: for my domain (processing data with a time dimension) it was very painful to keep track of values since the only efficient data structures were mutable. The core issue that I had debugging was that I had a hard time tracking when the data changed. Having immutable values provides a dead-simple solution to the problem of history.

    I wholeheartedly recommend reading SICP to anyone who ends up writing code in Lisp because it is a great way to expand one's mental model of what's possible in terms of capturing abstraction in code. And I think Scheme is a really nice language to learn. If you are interested, you might want to look at The Little Schemer. I have found Chez Scheme (now free) to be excellent.

    Good luck--feel free to write if you have any questions.

    Cheers! afm
u/CapoFerro · 3 pointsr/leagueoflegends

Groovy is a scripting language so it solves a fundamentally different problem than Java does. It's fast enough for most things but it doesn't approach the speed of Java as it does a lot more work (hence burns more CPU time) to give you advanced features. When you want to build something big and powerful, you will choose Java over Groovy.

It's worthwhile learning both Java and Groovy as both run on the JVM and can interface directly with each other's objects. It's common to write a Java application with pieces of the codebase written in Groovy or the reverse: a Groovy application with pieces written in Java where better performance is required.

Especially while you're in school, learn as many languages as you can. Each new language you learn will teach you something new about programming and will improve your overall effectiveness as a programmer. Additionally it'll make it easier for you to keep up with technology. I've been a professional programmer for 4.5 years and have used more than 10 languages in my day to day work. It's expected that you can pick up a new language fairly quickly when necessary.

Specifically try to learn different classes of languages. Java is a Statically Typed, Compiled, Object Oriented Language. Scheme, on the other hand, has none of those attributes. It's a Dynamically Typed, Interpreted, Functional Language. Check out The Little Schemer if you're interested.

u/stuhacking · 3 pointsr/programming

I'm glad someone suggested scheme. Then get her The Little Schemer. It's a nice introduction to the language in the form of step by step questions.

Warning: Food related examples may cause hunger.

u/wreckedadvent · 3 pointsr/learnjavascript

Functional programming is notoriously difficult to teach due to people learning it and getting stuck in jargon. Then it becomes almost impenetrable when you combine that with a language with a totally new syntax (like haskell). There's an old joke that's somewhat tired but expresses this well: "what's so hard about monads? It's just a monoid in the category of endofunctors".

That all being said, I think that means the best way to seriously get into it is to avoid resources that focus on jargon. Unfortunately javascript is not a great language for FP, so most of the great resources I can think of focus on other languages:

  • F# for fun and profit is basically everything I just said, but for F# (this specifically talk really helped me but check out the whole website):
    https://fsharpforfunandprofit.com/rop/

  • I've been consuming content from Mark Seemann for a while. I liked his book on dependency injection a lot, but he also gives good talks on some functional stuff: https://www.youtube.com/watch?v=US8QG9I1XW0

  • LYAH (learn you a haskell) is somewhat obligatory. I don't really like it too much since it almost immediately delves into typeclasses (which I think are very intimidating to a newbie) but I would feel bad not giving it a mention: http://learnyouahaskell.com/chapters

  • The little schemer is a good way to pick up LISP (and you will eventually pick up LISP if you stay in functional circles long enough, the language is just too perfect). LISP is especially good for getting you out of thinking of things in imperative steps and more like streams of data (which is the big take-away).

  • On the javascript side of things, react and react-likes can actually be a decent way to start thinking functionally, if you avoid the class-based stateful components. Redux takes a lot of lessons learned from FP. I picked up react many, many moons ago so I don't remember any good resources there, sorry.

  • The elixir home page is very dry, but focuses on learning a functional language pragmatically and without a lot of the higher-level jargon.

  • Rust! The rust book is one of the better programming books I've read, and rust will probably be the most approachable thing on the list if your background is javascript, especially if you're already comfortable with how promises work. Rust is heavily influenced by functional languages, to the point it doesn't even have exceptions.
u/Julian-Delphiki · 3 pointsr/scheme

I learned using Dr Racket and this little book: http://www.amazon.com/exec/obidos/ASIN/0262560992/ref=pd_sim_books/103-5471398-9229403

The little schemer is great.

u/denialerror · 3 pointsr/java

I really like Java Puzzlers.

u/SofaAssassin · 3 pointsr/cscareerquestions

You probably won't need to do anything until you actually start working, because you don't know what the tech stack of your company looks like yet.

For me, the generic Java-centric books that I think every Java developer should read are the following. They are the only Java books I did not end up burning/shredding:

  • Java Concurrency in Practice - Written by Brian Goetz, who architected and implemented large portions of the java.util.concurrent API that was introduced in Java 5, which makes writing concurrent code easier depending on your use cases.

  • Effective Java- Written by Joshua Bloch, who implemented major portions of the Java API. This is a lot of best practices for Java which are still applicable today (the book is 6 years old).

    Beyond either of those, though, I really wouldn't care about any other dead tree Java book. You'll probably spend significantly more time learning internal libraries and 3rd party stuff like Spring or Guice or Apache Commons or whatever your company uses.
u/GeorgeMaheiress · 3 pointsr/java

A good resource is Java Concurrency In Practice. Sounds like you'd be interested in Item 5.3: Blocking Queues and the Producer-consumer Pattern. Unfortunately I can't share it with you as it's copyrighted, but here's the short code snippet from it:

Producer & Consumer:


public class FileCrawler implements Runnable {
private final BlockingQueue<File> fileQueue;
private final FileFilter fileFilter;
private final File root;
...
public void run() {
try {
crawl(root);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}

private void crawl(File root) throws InterruptedException {
File[] entries = root.listFiles(fileFilter);
if (entries != null) {
for (File entry : entries)
if (entry.isDirectory())
crawl(entry);
else if (!alreadyIndexed(entry))
fileQueue.put(entry);
}
}
}

public class Indexer implements Runnable {
private final BlockingQueue<File> queue;

public Indexer(BlockingQueue<File> queue) {
this.queue = queue;
}

public void run() {
try {
while (true)
indexFile(queue.take());
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}

And startup method:


public static void startIndexing(File[] roots) {
BlockingQueue<File> queue = new LinkedBlockingQueue<File>(BOUND);
FileFilter filter = new FileFilter() {
public boolean accept(File file) { return true; }
};

for (File root : roots)
new Thread(new FileCrawler(queue, filter, root)).start();

for (int i = 0; i < N_CONSUMERS; i++)
new Thread(new Indexer(queue)).start();
}

u/thehollyhopdrive · 3 pointsr/java

Two Java specific books you should read cover to cover (and keep around as an effective reference) are Effective Java and Java Concurrency in Practice, and you should also seriously consider reading Design Patterns. The examples in it aren't written in Java but they hold for all OO languages.

u/sh0rug0ru · 3 pointsr/java

If you want a deeper understanding of concurrency, the go-to book is Concurrency in Practice.

For Spring, the go-to book is Spring in Action.

The best book I've read for OOP is Agile Patterns, Practices and Principles for C#. The first 1/3 of the book is Agile stuff, but the rest is a wide variety of topics in OOP. There used to be a Java version of this book, but the newer version is C#. But the C# code is nothing to different than what you would do in Java.

u/_dban_ · 3 pointsr/java

Java Concurrency In Practice is the book you want to read.

u/KiteWatcher · 3 pointsr/programming

I'm not too sure about a general purpose book, but if you are interested in learning about Java's concurrency stuff I'd recommend Java Concurrency In Practice. I'm sure you'll see threading in the corporate world and this book was actually recommended to me by a Google employee who was a guest professor for a semester.

u/kraftvgs · 3 pointsr/javahelp

We use it at work for asynchronous service calls. We deal with heavy amounts of data sometimes requiring hundreds of separate service queries. If we do them sequentially it takes a solid minute, but if we do them asynchronously we can really shave that time down. As others have said, though, it adds a LOT of complexity. It is also difficult to write unit tests for. If you are genuinely curious I would recommend Java Concurrency in Practice to learn more about it.

u/NoLemurs · 3 pointsr/learnjava

Coming to Java after a bunch of other languages, I found The Java Programming Language and Effective Java really helpful.

The first is a massive, and incredibly dry tome, but it leaves out nothing. Every question I had about the language was answered somewhere in the book. No technical details were ignored or glossed over. If you're looking for something really technical, it's hard to complain!

Effective Java is more useful as a sort of crash course in Java design patterns. The chapters are more conversational, but they give a really good sense of what professional idiomatic Java looks like, and how to think about the language. If you read through it, and understand the thought process behind each chapter, you'll have a really good sense of what good Java looks like.

u/CodyChan · 3 pointsr/C_Programming

Agreed, C Programming A Modern Approach, 2dn edition is the textbook I would recommend if you want to learn C, K&R is classic , but it lacks a lot details in C which are coverd in books like Pointers on C and C Traps and Pitfalls, C Programming A Modern Approach, 2dn edition covers most, if not all, of them.

u/hitmanactual121 · 3 pointsr/hacking

I can't recommend a good site, but I will recommend an amazing book which you can find here: https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628

u/matthewjosephtaylor · 3 pointsr/compsci

Modern software development is more about being able to search for the answer you need when you need it, than learning anything on the off-chance it might be useful in the future.

I remember when my desk was littered with books, and browsing the tech section of my local bookstore was a happy diversion and source of inspiration. My list of RSS feeds was a mighty well tended garden.

Sadly no more. :(

The classic readings would be things like Joel on Software (blog), the Pragmatic Programmer, and the Mythical Man Month.

If you haven't read http://www.amazon.com/The-Programming-Language-2nd-Edition/dp/0131103628 then do so (even if you already know C). If you own only one programming book, this should be it. It is the key to all modern languages you are likely to experience in your lifetime. Imagine you are an acolyte taking the first steps into your chosen religion. This book is the old testament, written by the gods themselves. If you truly want to understand the mysteries you will find no better reference.

More important today is being able to search/ask intelligent questions on stack overflow, use google effectively, and get a feel of what software is worth your precious time to learn. Hint: evaluate the community surrounding the software with a stern eye, often the community is more important than the actual software.

There is nothing special about building a computer. Feel free, newegg.com and /r/pcmasterrace are your friends. More important would be to get an an Amazon account and learn how to spin up instances on EC2. Why build a computer when you can summon and disperse 100's of them on a whim?

And since 100 computers is more interesting than 1, the 2nd book you own should be:

http://www.amazon.com/UNIX-Network-Programming-Richard-Stevens/dp/0139498761

By this point I assume you are proficient with, understand and love Unix. If not then IMHO your education dollars and/or time were misspent. Break loop, forget about learning frameworks, languages, etc and spend at least the next six months becoming intimate with vi, bash, make, and the linux kernel. These are the true weapons of a Jedi code master.

A full personal subscription to https://www.safaribooksonline.com is more than worth it, and should be considered mandatory for any professional software developer.

Have fun. :)

u/Skaar1222 · 3 pointsr/learnprogramming

I am currently taking my systems programming class for my CS degree. We use linux, with C and VIM, and have a couple of books that are actually really helpful.
This book will walk you through C and its syntax. I have read through most of it. Its pretty easy to follow and comprehend.

https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628

This book I havent cracked open yet but plan on it today. My teacher swears by it, however.

https://www.amazon.com/Unix-Programming-Environment-Prentice-Hall-Software/dp/013937681X

u/gotNoGSD · 3 pointsr/linuxquestions

You can't have it both ways. if you want to know exactly then you have to drill down to the fundamentals which are handled at a low level (C & assembly). If you want to understand the general concepts you'll need to make lateral moves and study CS along with having enough of the tiny details to fill in the gaps with your intuition.

I think what you may like is a book on the linux API. This is between kernelland and userland.

Try this one:

https://www.amazon.com/Linux-Programming-Interface-System-Handbook/dp/1593272200

Before you do that ensure you know enough basic C. Linux kernel uses K&R style. So this might be good enough and your best bet to fasttrack.

https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

Do keep in mind this is 2K pages worth of reading. This should help to fill in enough of what you don't know you don't know so that you can better use google-fu to get you further.

u/Agrentum · 3 pointsr/rpg

After Codecademy it could help you to read C Programming. It is, at least in my opinion, awful to learn C/C++ form the start but it rocks as a second/third language. It helps with understanding more about basic computing and with help of Cython you can make your Python programs run faster even by the factor of 10 (sometimes more, sometimes less).

JavaScript is also pretty neat language to learn from the start. Course at Codecademy even features making little text based game. Subscribe to /r/learnprogramming and /r/learnpython for further help.

u/odougs · 3 pointsr/EngineeringStudents

Sounds like the problem was with your learning environment, not you. Getting started with programming is very tough at first; you need all the advantages you can get. But I see a number of things in your post that are serious disadvantages:

  • C++: Too much complexity, arcane compiler error messages, requires lots of skill and knowledge to debug, many powerful yet dangerous features you will stumble across before you are ready. NOT a good first language, especially if you don't have a great mentor.
  • Restricted access to the IDE: hopefully you downloaded a free IDE and practiced a lot at home...
  • Lackluster book / instructor: this is very important; you need better resources here. I would suggest you dedicate your summer to mastering K&R C. Your mentor would be an online forum of your choosing, such as stackoverflow or r/learnprogramming.

    Stick with it! Things get a lot less scary / frustrating once you develop a solid foundation!
u/DevilsWeed · 3 pointsr/darknetplan

As someone with zero programming experience, thank you for the reading list. I was just planning on trying to learn python but I don't know if that's the best language to start with. Would you recommend just reading those books and starting with C?

Also, since I have no experience a technical answer would probably go right over my head but could you briefly explain how someone would go about messing around with an OS? I've always wondered what people meant by this. I have Linux installed on a VM but I have no idea what I could do to start experimenting and learning about programming with it.

Edit: Are these the books you're talking about? Physical Computing, C programming, and Writing Great Code?

u/AmericanJBert · 3 pointsr/learnprogramming

The C Programming Language by K&R.

It shouldn't be too hard to learn C since you know C++, they are very similar.

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/grub5000 · 3 pointsr/hacking

Yes I forgot to mention. I'd never touched C code before this book and it's teaching me everything I need to know so far (though I have a really old copy of The C Programming Language (2nd Edition) incase I need it, haven't done yet)

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/AlexGL23 · 3 pointsr/UTAustin

Hey I am a CS major who is graduating May 2015 and honestly I can tell you not to worry and dont feel rushed in taking as many hours as possible. Now that I am entering my last year I feel I rushed through classes so fast trying to take as many as possible that I didnt get as much as I should have from them. I couldnt devote more time to them since I had other classes to worry about and it reflected on my grade by getting a B instead of an A. So take your time, find whats right for you and go with it.

312 is all about basic Java. So you learn for loops, if statements, classes, polymorphism, and other stuff. I had no prier experience with programming till I took that class and I got an A in it without working to much. If you want to work on your java, go to sites like http://codingbat.com/ and go through all the java exercises. Those were homeworks I had when I took 312.

If you want to get ahead of your class learn C!! Seriously after 312 and 314(data structure) you will be programming a lot in C (and while your at it learn c++ as well). I recommend writing all the programs you did in java in C. This book is an excellent source to learn C

Finally I recommend reading these two articles 1 2 They were assigned to me in a previous class and I wish I had read them as a freshman.

TLDR: Dont worry, find the right pace for you and check out the links I supplied as they can give you more information.

u/dmazzoni · 3 pointsr/learnprogramming

This is one of the most frequently asked questions on every programming forum, ever. I'm going to start by linking to one of the best answers the previous times it's been asked:

https://www.reddit.com/r/learnprogramming/comments/1ehg69/explain_pointers_like_im_five/

Once you understand WHY you need pointers and WHAT they are, the rest is just syntax.

Do you have K&R? You're never going to find a book that's more clear and concise than that. It won't explain the concepts like you're 5, but once you understand the concept it explains exactly what * and & means. It's literally the explanation written by the authors of the C programming language.

If you're still stuck, please post a specific example of some code you're struggling with.

u/xfdp · 3 pointsr/learnprogramming

on a scale of 1-10 how good are you looking to get at programming?

Also

u/desustorm · 3 pointsr/learnpython

CLRS is the classic for learning about different algorithms and concepts (e.g. sorting, graphs, data structures, etc. etc.). I didn't really like books when I was learning, but hacking my way through the K&R C book wasn't too painful

At university we learnt C, Java (and he marked us down if we used an IDE...), and then we had freedom to pick up whatever. So I would say having a look at C or C++ couldn't hurt and will definitely teach you fundamentals better than Python. But bear in mind there are some concepts in lower-level languages that you can (for the most part) ignore in Python, e.g. Garbage Collection, memory allocation, pointers.

u/professorlamp · 3 pointsr/learnprogramming

If you're not a complete beginner then go for The C programming language .

If you need to get up to speed on both programming and C, then I'd recommend something a bit more friendly such as Programming in C

u/create_a_new-account · 3 pointsr/learnprogramming

> The C programming language

he's saying to get this book

https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

https://en.wikipedia.org/wiki/The_C_Programming_Language

also good is this course
https://www.edx.org/course/cs50s-introduction-computer-science-harvardx-cs50x

sign up for the free version -- its the same teacher, lectures and projects used in the Harvard classroom

its half in C and the rest in python and web programming


if you've got one dollar you can still get the basic Humble Bundle
https://www.humblebundle.com/books/head-first-books
which includes "Head First C" which is pretty good
just go to that site and scroll down

u/wereinz · 3 pointsr/ComputerEngineering

Read the C Programming Language, it will help you in your course.
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

u/salamanderoil · 3 pointsr/AskComputerScience

For C: Build your own Lisp. As the name suggests, this book teaches you C as it guides you through the process of implementing your own Lisp (which it will also teach you about). It's also freely available online.

​

Now, the more conventional answer to this question is Brian Kernighan and Dennis Ritchie's classic The C Programming Language, often just referred to as K&R. This is a fine book, but unless you can find it secondhand or in a library, it is a tad expensive. Another advantage of Build your own Lisp is that it guides you through the process of building a large-ish program, so you can see how things fit together in a big-picture way.

​

For OCaml: Real World OCaml is freely available online, and will not only teach you the language, but show you how to do all sorts of cool things with it. OCaml From The Very Beginning, and its follow-up text, More OCaml: Algorithms, Mehods, and Diversions, are very well-regarded, but aren't free (although $25 USD will get you both in PDF format).

u/Networksguy · 3 pointsr/UCSC

Learn C would be the best. The book that most likely is going to be used is this one: https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

But there are COUNTLESS free resources online to learn C.

You could also learn another language, but i recommend just jumping into C

u/jreborn · 3 pointsr/javascript

The C Programming Language is a good one too. Although it's specific to learning C, reading through it and doing all the exercises is something every programmer should do at least once.

Also, Code Complete 2.

u/vinlinux · 3 pointsr/C_Programming

These are my standard recommendations to anyone who wants to learn the C language these days:

https://www.amazon.com/C-Programming-Modern-Approach-2nd/dp/0393979504/ref=sr_1_1?ie=UTF8&qid=1537025256&sr=8-1&keywords=king+c+language&dpID=41%252BbFKtFHjL&preST=_SX218_BO1,204,203,200_QL40_&dpSrc=srch

https://www.amazon.com/Reference-Manual-Samuel-P-Harbison/dp/013089592X/ref=sr_1_sc_1?ie=UTF8&qid=1537025419&sr=8-1-spell&keywords=herbison+steele

The first one is a great book to learn C from the basics to the details of the standard library, and it's updated to cover the C99 Standard. The second is more of a reference that is very useful once you get more experienced, it covers C99 as well, it is basically the C Standard document rewritten for humans : ) My students find the first one very complete and full of good exercises and explanations. Not everyone has bought the second, those who have find it invaluable.

u/_lyr3 · 3 pointsr/C_Programming

C and C++ are totally different programming languages.
------------------


  1. Code Blocks, Eclipse...

  2. Get a good book as: K&R, C modern approach or C reference manual

  3. Books exercises, open source projects
u/SoSweetAndTasty · 3 pointsr/AskPhysics

To go with the other comments I also recommend picking up a book like numerical recipes which describes in detail many well tested algorithms.

u/Anarcho-Totalitarian · 3 pointsr/math

There are numerical methods that make essential use of randomness, such as Monte Carlo methods or simulated annealing.

And numerical methods can be applied to statistics problems. A nonlinear model is probably going to require a numerical scheme to implement. The book Numerical Recipes, which is all about actually implementing numerical methods on a computer, has four chapters covering randomness and statistics.

> My plan at present is to do a PhD in numerical PDEs and then go into industry in scientific computing as a researcher or developer.

I'd make sure that whoever it is you want to work with is heavy on the computation side. Even better if they work with supercomputers. I say this because even a topic like numerical PDEs can go very deep into theory (consider this paper ). Industry likes computer skills.

u/gwippold · 3 pointsr/statistics

You could read the IBM manual OR you could buy this much more user friendly book:

http://www.amazon.com/Discovering-Statistics-using-IBM-SPSS/dp/1446249182

u/Adamworks · 3 pointsr/statistics

Discovering Statistics using SPSS
This is the type of book you want. It has good examples and straightforward commentary.

u/sjgw137 · 3 pointsr/statistics

I really like this book:
http://www.amazon.co.uk/Discovering-Statistics-using-IBM-SPSS/dp/1446249182/ref=as_li_tf_sw?&linkCode=wsw&tag=statihell-21

Fun to read, easy to understand, entertaining. What stats book is entertaining???

u/grandzooby · 3 pointsr/javascript

I ran across this presentation last night by Max Kuhn, one of the authors of Applied Predictive Modeling (http://www.amazon.com/Applied-Predictive-Modeling-Max-Kuhn/dp/1461468485).

https://static.squarespace.com/static/51156277e4b0b8b2ffe11c00/t/513e0b97e4b0df53689513be/1363020695985/KuhnENAR.pdf

It's a really great discussion of how they did the joint authoring of the book and the tools they used - and what they would do differently.

u/icybrain · 3 pointsr/Rlanguage

It sounds like you're looking for time series material, but Applied Predictive Modeling may be of interest to you. For time series and R specifically, this text seems well-reviewed.

u/DataWave47 · 3 pointsr/datascience

You're welcome. Thanks for providing some additional detail. This helps. I think if you read up on the CRISP-DM and use that framework to walk your way through some of these challenges it will be very beneficial to you. I'd recommend giving this document a read when you have the time. I think that if you show them that you are comfortable with these guidelines and know how to work your way through it to solve a problem it will go a long way. Model selection can be a bit tricky depending on the situation but I think most practitioners have a favorite model that they go to. Sounds like you're already familiar with Wolpert's "No Free Lunch Theorem" suggesting to try a wide variety of techniques. Personally, this is where I'd start digging deeper into tuning parameters (cross-validation, etc.) to help with that decision. Ultimately though, it's important to have a firm understanding of the strengths/weaknesses of the different models and their use cases so you can make an informed selection decision. Kuhn and Johnson's book Applied Predictive Modeling will be a good read to help you prepare.

u/TheDataScientist · 3 pointsr/statistics

Many thanks. I can speak more on the topic, but you're wanting to learn a lot about Machine learning (well lasso and ridge regression technically count as statistics, but point stands).

If you learn best via online courses, I'd suggest starting with Andrew Ng's Machine Learning Course

If you learn best through reading, I'd recommend two books: Hastie, Tibshirani, & Friedman - Elements of Statistical Learning
and Kuhn & Johnson - Applied Predictive Modeling

Obviously, I'd also recommend my blog once I learn my audience.

u/Luonnon · 3 pointsr/rstats

Quick and dirty answer: speaking very broadly, random forests -- found in the "randomForest" package -- tend to win battle-of-the-algorithms type studies. If you just want to play with a single model, I'd recommend starting with that and looking at the help for it.

Longer and better answer: Your best bet to answering all these questions and getting a good handle on data mining/predictive analytics is this book: Applied Predictive Modeling. The book references the "caret" package quite a bit, since the package's author is the same person. With it, you can train a lot of different types of models for regression or classification optimizing for accuracy, RMSE, ROC, etc. It provides a standard API for playing with models and makes your life much, much easier. It has its own website here.

u/peacefulcommunist · 3 pointsr/iOSProgramming

Agreed. I also recommend K&R, it is a short but effective introduction to C, written by the makers of C themselves.

u/rainerdeal · 3 pointsr/computerscience

C: Just start practicing with it. "The C Programming Language" is commonly regarded as the best textbook by young and old programmers alike. Hands on experience is the best especially when supplemented.

Linux: Get VM software and install a few flavors. Poke around. Get used to using a package manager, BASH, and Git. Your TA or professor may be able to help you with Virtual Box. The beauty of a VM is that you can pretty much do whatever you want without risk of damaging your own machine, so don't be afraid to experiment. You could try better VM software like VMWare or Parallels. You could also try dual booting.

On your host machine, I would recommend completely ditching whatever shell Windows uses these days. Install Cygwin so you can keep practicing BASH commands. And you can also get a package manager, Chocolatey.

u/Falcrist · 3 pointsr/EngineeringStudents

A calculator: TI36X Pro, Casio fx-115ES PLUS, or HP 35s (these are the 3 best calculators allowed on the FE and PE)

If you get a graphing calculator, either get the TI-84 Plus C (which can be used any time graphing calculators are allowed), or get an HP Prime or TI Nspire CS CAS (which are WAY more powerful and useful).

Pencils: Pentel Graphgear 1000, Pentel Kerry, Rotring Rapid Pro (include an eraser such as the Sakura Foam Eraser). The rapid pro pen is also pretty popular.

If he's doing a software/computer engineering degree, get him a copy of K&R2.

If he's doing electrical/electronics engineering, he'll benefit from a nice soldering station, a multimeter, or a used oscilloscope (such as a Rigol DS1052e).

I can't give much advise for mechanical and civil. Sorry.

Oh yea, the paper is useful... especially with some pressboard report covers. They make nice notebooks (albeit expensive), and pair really really well with looseleaf textbooks.

\
The HP is more expensive, but it looks like a tool that professional engineers use when they're not in front of a computer. I ended up getting an HP prime, so I never could justify a 35s

u/greyfade · 3 pointsr/learnprogramming

Keep working through your Python book. From what I've read, it seems to be a good book, and Python is worth being familiar with.

When you feel like you need a change of pace, watch Buckland's lectures. He doesn't dive into C right away, but instead talks about a very simplified low-level machine code. (It's simple enough, actually, that you could very easily implement a virtual machine for it in Python.) It'll help you build an understanding of how programs actually run, so that when you pick up a book on C, things will make more sense.

Then, when you feel confident in Python, go grab a book on C. I don't have any specific recommendations (there are a ton of good books) but it's nice to have a copy of K&R C on hand. Then you'll want a book on data structures. Maybe Introduction to Algorithms.

u/cellobo18 · 3 pointsr/learnprogramming

This is the C bible: C Programming Language, 2nd Edition https://www.amazon.com/dp/0131103628/ref=cm_sw_r_cp_api_rQMUAb33ZZ7E2

u/Babelius · 3 pointsr/learnprogramming

I wish it were as easy as jumping into the language and knowing the syntax. Sadly C is as nuanced a language as it comes. From obscure compiler errors to pointer problems; C isn't something you simply look at the syntax once and hit the ground running (as familiar as it may seem)

Your best bet is to read through K&R and use the language as often as possible. If it's an introductory course, you should be able to stay ahead of the syllabus and be prepared to handle any problems. Still, you're inexperienced in the language, be prepared to learn a lot, and fast.

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/speed3_driver · 3 pointsr/learnprogramming

Without knowing what your interests are, if you're wanting to get back to the basics, one of the best programming books ever written is without a doubt: http://www.amazon.com/The-Programming-Language-Brian-Kernighan/dp/0131103628

u/llFLAWLESSll · 3 pointsr/learnprogramming

Since you know Java I would suggest that you a read one of the best programming books ever written: [K&R The C Programming language] (http://www.amazon.com/The-Programming-Language-Brian-Kernighan/dp/0131103628/), this book was written by the people who made the C language and it's one of the best books ever written. It is a must read for every C programmer. [Computer Systems: A Programmer's Perspective (3rd Edition)] (http://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/013409266X/) is a great book to learn about computer systems. But I would recommend [Operating Systems Design and Implementation (3rd Edition)] (http://www.amazon.com/Operating-Systems-Design-Implementation-Edition/dp/0131429388) because it has some minix source code which will go really well with learning C.

Best of luck buddy :)

u/jnyoike · 3 pointsr/cprogramming

You can try reading The C Programming Language by Dennis Ritchie and Brian Kernighan. I've been reading it for the past month or so and it has really helped me out a lot

u/mawattdev · 3 pointsr/C_Programming

Read K&R C and work through the examples.
C Programming Language, 2nd Edition https://www.amazon.com/dp/0131103628/ref=cm_sw_r_cp_apa_i_KsHRCbMHMDBX8

u/jeebusroxors · 3 pointsr/netsec

For C: http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

Known as the K&R it is THE way to learn C, as long as you are familiar with general programming concepts already (scripting counts).

u/Bassetts · 3 pointsr/learnprogramming

I can't believe that no one has recommended The C Programming Language. It gives you a clear concise introduction to C and in my opinion is still the best place to start if you want to learn C and learn well from reading books. It also gives you plenty of exercises along the way to help you progress.

u/slowbudget · 3 pointsr/learnprogramming

Well, I'm afraid most of that knowledge won't really help you there. While the basics of programming like variables, loops, functions, etc. are certainly useful anything OOP related - which, in Java is a lot - isn't really that applicable on C which is procedural-only (at least on vanilla C without a bit of pointer hacking that you probably shouldn't mess with given your beginner status).

Really, I'd suggest trying out CS50, a C course from Harvard available online as a series of video lectures and then give a look at K&R, which is widely regarded as the C book, even if not necessarily beginner friendly.

u/davorzdralo · 3 pointsr/promos

Computer science. And this is probably the most important book I had to buy.

u/_teslaTrooper · 3 pointsr/arduino

Learning C is probably better. Arduino is just a framework built on top of C++, so if you learn arduino you get a strangely limited understanding because you don't know the underlying language.

And while under the hood arduino uses C++, from a user perspective it's just C with classes.


This is the most recommended C book. The only hard part of C is pointers and you don't even need those for arduino most of the time.

u/mgob · 3 pointsr/learnprogramming

If you REALLY want to learn C++ and want to learn it well, I'd recommend learning C as well. There are a lot of details about the language that, like others have said, are derived from C. If this is something you're willing to take the time to do, I'd recommend reading K&R, it's a fantastic book that's not too complicated to read through. Plus, understanding C will help you understand what a lot of what other languages do for you under the hood and (at least in my opinion) will make you a much better programmer. I learned to program in C/C++ (and I'm not some old timer, I'm still in school) but I think it definitely has been worth the learning curve.

u/zgm3 · 3 pointsr/learnprogramming

Thinking in Java and Head First Java are also really good.

u/ixAp0c · 2 pointsr/learnprogramming

You could try something like K&R, but you would probably benefit from a book like that a bit more if you know how memory and the stack/heap works, and how stuff works under the hood. You might want to read a book like Code, which goes over more low level stuff with a nice approach that doesn't assume you have a huge EE/CS background. There are also the Head First books, I haven't read Head First C yet but it looks interesting; I have read Head First Programming and the non-web development sections of Head First Python (android and web development just don't interest me right now), and they are fun to read with the "Head First approach".

u/Mr_Ected · 2 pointsr/learnprogramming

Here are my favorite books for sharpening your C saw. The great news is that all of these are less than 300 pages each.

The C Programming Language (Kernighan, Ritchie)

An essential for all C programmers. It's short but dense and it's packed full of great exercises.

Data Structures in C (Kalicharan)

This book offers a practical look at data structures and a few algorithms. It has a bunch of exercises to help you retain what you're learning.

The C Puzzle Book (Feuer)

A tiny book packed with a bunch of C puzzles, the pointers chapter is especially helpful.

u/Newt_Hoenikker · 2 pointsr/C_Programming

In addition, a student of C may want to consider the implementation of some higher level features not readily available in the base language. Not only is it interesting to learn how some interpreted languages may accomplish things (LUA, Python, Perl, etc...) it's also valuable experience in regards to best practices in lower level languages. Once you feel you have a solid grasp on fundamentals, cough K&R cough, I find it's worth checking out C Interfaces and Implementations by David Hanson and Object Oriented C by AT Schreiner. The latter-most is free.

u/exoticmatter · 2 pointsr/learnprogramming

If you are learning from newboston I strongly doubt you "have a good understanding" of C. Try reading TCPL. As for network programming, there's no reason not to give it a whirl - what's the worst that can happen? Read Beej's guide to get started.

u/Adamas_Mustache · 2 pointsr/SBU

Most assigned texts for CS are unnecessary. There are a few you could get because they are considered to be part of the CS bible such as C Programming Language by Kernighan and Ritchie.

u/xyzwave · 2 pointsr/cscareerquestions

Read SICP and K&R C, really understand these and everything else should take care of itself.

u/faroukarmand · 2 pointsr/learnprogramming
u/zomb3h · 2 pointsr/gmu

I took Chen and passed. All I did was read K&R over the break before his class and supplemented it with lecture.

https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628

u/wiscogal · 2 pointsr/UWMadison

I took it Spring 2016, so not with Skrentny. If you're not familiar with C you could learn it over winter break. You might use this textbook: https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628 so you could get it and start reading it early.

u/massivewurstel · 2 pointsr/Python

Mine would be to learn some C for a better understanding of Python internals. Also, go through this book.

u/zzyzzyxx · 2 pointsr/learnprogramming

None that I know. Check out the sidebar though. There are several links to online courses and other reddits, some of which cover C. In my opinion, however, C is best learned from a book like The C Programming Language.

u/nmukerjee27 · 2 pointsr/learnprogramming

For C, definitely use the K&R text. It's the best C resource I've come across.

I would recommend starting with Python, though - it will give you a general understanding for how programming works without forcing you to deal with directly managing the machine's resources. A simple online search for Python resources will turn up many good-enough options, but the basic principle is to try writing code that automates basic tasks that you might perform on your own (like renaming all the files in a directory, or changing a color picture to black-and-white) and to progressively try this with more and more complicated tasks.

u/balefrost · 2 pointsr/AskProgramming

OK, so multidimensional arrays in C are interesting, especially if you come from a language like
Java or C#.

In a language like Java, where many things are pointers, there is no such thing as a
multidimensional array. All arrays have one dimension, though you can sort of fake it with what's
known as a jagged array, which is an array of pointers to other arrays. This isn't as common in C,
but I figured that I'd mention it since there is one place you see it all the time:

int main(int argc, char argv[])

In main, argv is an array of pointers to arrays of characters. If we call it with the arguments
foo and foobar, it would look something like this:

+-----+
| | +---+---+---+----+
| O-------> | f | o | o | \0 |
| | +---+---+---+----+
+-----+
| | +---+---+---+---+---+---+----+
| O-------> | f | o | o | b | a | r | \0 |
| | +---+---+---+---+---+---+----+
+-----+

As you probably already know, arrays and pointers are somewhat interchangeable in C. I can do this:

int arr[10];
int
parr = &arr[0]; //or int *parr = arr

arr[n] == parr[n] == (parr + n) //true for all 0 <= n < 10

For a one-dimensional array, there's no difference between the array itself and a pointer
to the array's first element. If the array's cells hold values of type T, then the pointer should be
of type `T
. C arrays arent bounds-checked (though going past the end of the array <br /> has undefined behavior), so you don't really *lose* anything when going from an array to a pointer.<br /> <br /> Running with ourmainexample, I can also do this:<br /> <br /> char **pargv = &amp;amp;argv[0]; //orchar *pargv = argv<br /> <br /> pargv[n] == argv[n]; //true for all 0 &amp;lt;= n &amp;lt; argc<br /> <br /> In this case, each cell in our array stores achar. So if we want a pointer that points to that <br /> array (i.e. points to the first element of the array), it needs to be achar*`.

---

But like I said, C has proper multidimensional arrays as well. Instead of an array of pointers, we
have an array of arrays. Something like this:

char strs[2][7] =
{
"foo",
"foobar"
};

... will show up in memory like this:

+-----------------------------------+
| |
| +---+---+---+----+----+----+----+ |
| | f | o | o | \0 | \0 | \0 | \0 | |
| +---+---+---+----+----+----+----+ |
| |
+-----------------------------------+
| |
| +---+---+---+---+---+---+----+ |
| | f | o | o | b | a | r | \0 | |
| +---+---+---+---+---+---+----+ |
| |
+-----------------------------------+

... which is essentially the same as this:

+----+
| f |
+----+
| o |
+----+
| o |
+----+
| \0 |
+----+
| \0 |
+----+
| \0 |
+----+
| \0 |
+----+
| f |
+----+
| o |
+----+
| o |
+----+
| b |
+----+
| a |
+----+
| r |
+----+
| \0 |
+----+

But this is also important: there's also a similarity between one-dimensional arrays and multidimensional arrays.
Multidimensional arrays are arranged end-to-end in memory, so it's possible to use a plain pointer to refer
to a multidimensional array:

char
pstrs = &amp;strs[0][0];

pstrs[r 7 + c] == strs[r][c]; //true for all 0 &lt;= r &lt; 2 and 0 &lt;= c &lt; 7

So let's say that you have a function that allocates, initializes, and returns a foo. It might look like this:

foo
create_foo()
{
Foo p = malloc(sizeof(foo));
return p;
}

How would you allocate and return a one-dimensional array of foo?

foo
create_1d_foo_arr(int length)
{
foo p = malloc(length sizeof(foo));
return p;
}

How would you allocate and return a two-dimensional array of foo?

foo create_2d_foo_arr(int rows, int cols)
{
foo
p = malloc(rows cols sizeof(foo));
return p;
}

---

Now, depending on what you're doing, you can get fancy. To return to a previous diagram:

char strs[2][7] =
{
"foo",
"foobar"
};

+-----------------------------------+
| |
| +---+---+---+----+----+----+----+ |
| | f | o | o | \0 | \0 | \0 | \0 | |
| +---+---+---+----+----+----+----+ |
| |
+-----------------------------------+
| |
| +---+---+---+---+---+---+----+ |
| | f | o | o | b | a | r | \0 | |
| +---+---+---+---+---+---+----+ |
| |
+-----------------------------------+

We can declare a more specialized pointer than we had before:

char (pstrs)[7] = strs;

... which should be read as "a pointer to a 7-element char array". But as we've established, that
can also be seen as an array whose cells can hold 7-element char arrays. That's how we've drawn it
in our diagram.

We can now use that pointer as if it was a 2-dimensional array:

pstrs[1][0] = 'm';

... which will update the second string to moobar.

Note that this:

char (
pstrs)[7]

is not the same as this:

char pstrs[7]

As we discussed at the beginning, `char
pstrs[7]is an array of pointers to characters (i.e. <br /> potentially a jagged array), whereaschar (*pstrs)[7]` is a pointer to an array of characters (i.e.
potentially a two-dimensional array).

---

If you can get your hands on a copy of K&amp;R C, chapter 5 has an excellent treatment of this topic.
I think K&amp;R is quite readable but also fairly comprehensive. It's not at the level of the language
spec, but it covers a good many cases.

u/F14D · 2 pointsr/arduino

K&amp;R's C Book is also very good.

u/gregK · 2 pointsr/programming

buy these 2 books:

u/oureux · 2 pointsr/learnprogramming

Go through the WWDC videos, Apple Docs for specific info about different aspects of the language and how it works, Programming in Objective-C (5th Edition) (Developer's Library), and if you want to know more of the fundementals of the C language then you could pick this book up C Programming Language (2nd Edition), it will help you with general programming practices.

u/playaspec · 2 pointsr/arduino

&gt; I bought a gameduino shield

&gt; I am weak in coding

You sure have bitten off quite a bit for a beginner. /u/Thereminz's advice is pretty sound. Seek all the demo code you can find, and spend lots of time reading and understanding it. Tweek, play, and learn.

Also, you should be reading programming books to better understand the language. I recommend the K&amp;R C programming. It is the bible of C, and every other C book in existence was born from it. It's a bit dry, but it's also very concise. I always keep it handy. Also, "Writing Great Code" is a fantastic read, and a must have for optimizing for performance in microcontrollers.

u/sticksnbeans · 2 pointsr/learnprogramming

Python is an easier starting point than C. I've tried to learn Python many times, but I always find myself gravitating toward C.

C Programming Language by Kernighan and Ritchie is a very good book to pick up.

C Primer Plus by Stephen Prata is another good one for the C language. I gravitate heavily toward C. Mostly because it interests me. Also the first programming language I've ever decided to pick up.

Do not give up denizen! Programming is an exciting experience when you get things to work properly. There is so much you can do with it.

Best piece of advice is to choose what best suites your interests, and goals.

u/MrNeurotypical · 2 pointsr/robotics

I found it much easier to learn C first and then C++

https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

&amp;#x200B;

BTW I don't use C++ anymore, just python and BASH.

u/zifyoip · 2 pointsr/learnprogramming

It's hard to give recommendations about books when you don't tell us what the books are.

For example, if one of the books is the second edition of The C Programming Language by Kernighan and Ritchie, then you should keep it. This book was published in&amp;nbsp;1988, but it is a well-written book that is still a good introduction to&amp;nbsp;C.

u/robbbbbbbbbbbb · 2 pointsr/learnprogramming
u/masterapropos · 2 pointsr/linuxquestions

Weary Traveler, you seek guidance into the world of C Programming. Know that it is a difficult journey and peril is around every corner. A good start would be tomes from Kernighan and Ritchie (http://www.amazon.com/The-Programming-Language-2nd-Edition/dp/0131103628) or a more modern scroll from Zed (http://c.learncodethehardway.org/) .

Do not give up and soon you will be programming in C as a budding apprentice mage yourself.

u/djk80 · 2 pointsr/learnpython

Here is a video I watched the other day about 7-8 mins a student summed up his entire CS undergrad. He basically goes over what to learn once you become proficient in a language like Python to have a deeper understanding. As the other person mentioned he goes after looking at low level architecture and learning

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

He recommends learning C the book he recommends is https://www.amazon.com/gp/product/0131103628/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0131103628&amp;linkCode=as2&amp;tag=devoncrawfo05-20&amp;linkId=2848ad31c81353554f1744502c936f34

&amp;#x200B;

u/redditU2017a · 2 pointsr/cprogramming

That is a great question both in the literal and figurative sense - specifically, most languages have oddities when it comes to what is generically referred to as I/O handling. These originate from the fact that in spite of great advancements, converting a series of key strokes/taps on glass etc. still requires buffering and "de-bouncing" (prevention of multiple same key strokes from being read) etc.
in general, I would recommend Kernighan's book (C programming language ) as a fun guide that explain not only what the gotchas are but give solid ways to code effectively around them.

u/d1str0 · 2 pointsr/AskNetsec
u/vckd · 2 pointsr/cprogramming

If you don't have any specific questions for us here, The C Programming Language, co-authored by the creator of C, is the gold standard in books about the language.

u/passingby · 2 pointsr/getdisciplined

One of the best things to do is read what other programmers have to say. It opens yourself up to things that you might not normally come across. Schedule a time of the day where you will go on Stackoverflow to answer questions or read answers. Also in that time, read some blogs and any new articles. A few of the websites that I really like:

  • Stackoverflow

  • Coding Horror

  • Joel on Software

  • Wolfire Games (especially since you are into game development)


    Have you caught up reading the classics when it comes to software development? A great list of them can be found here. A few that I have found totally eye opening:

  • The Pragmatic Programmer

  • Programming Interviews Exposed

  • The C Programming Language

    Also, have you used any new technology lately to make something cool? Schedule a time everyday (similar to when you read new things) to work on a project no matter what. Close Reddit, close your email, and get programming! Here a few things I had on the top of my head:

  • Try making a web chat using SocketIO for the messaging and Node.js for the backend

  • Ever used a MVC style framework for web development? Try out something simple like Flask then move onto something more complicated with Django.

  • Learn Haskell

  • Learn a dialect of Lisp

    Hopefully all of these can give you an idea of how to improve.
u/crosstalk22 · 2 pointsr/TrollDevelopers

try the book https://www.amazon.com/Thinking-Java-4th-Bruce-Eckel/dp/0131872486 also the book for the java certs is pretty good but gets pretty down in the weeds

u/axlor · 2 pointsr/java

I always liked Effective Java the most, might be a little too advanced. I'm really not sure where you are in terms of comfort with syntax and basic concepts. Can you explain further what you've done in terms of programming in Java, and how you understand these concepts?

Also, I would suggest checking out TheNewBoston video series on Java programming, lots of great syntax and implementation of concepts you mentioned. http://www.youtube.com/watch?v=Hl-zzrqQoSE&amp;amp;playnext=1&amp;amp;list=PLAFF55E55870752DA

I think I may have found a book more for your level. www.amazon.com/Thinking-Java-4th-Bruce-Eckel/dp/0131872486. Thinking in Java. From a review, here are some topics covered:

Object-design basics

Inheritance and polymorphism

Object lifetimes

Exception handling

Multithreading and persistence

Java on the Internet

Analysis and design basics

Java basics: keywords and flow control

Initializing objects

Java packages

and many more.



Some of these I'm sure you've seen, and this will be another look at them, others will be new but important to know and understand.

u/Xartorx · 2 pointsr/politota

После java можно как-раз.
По java советую Thinking in Java и Effective Java и в довесок.

u/FatFingerHelperBot · 2 pointsr/learnprogramming

It seems that your comment contains 1 or more links that are hard to tap for mobile users.
I will extend those so they're easier for our sausage fingers to click!


Here is link number 1 - Previous text "K&amp;R"



----
^Please ^PM ^/u/eganwall ^with ^issues ^or ^feedback! ^| ^Delete

u/thurst0n · 2 pointsr/java

http://www.amazon.com/The-Programming-Language-2nd-Edition/dp/0131103628 This is still the go-to book for C. Much more than 6 years old now.

u/btalbot · 2 pointsr/learnprogramming
u/jschelling · 2 pointsr/ProgrammerHumor

Read The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie front to back. It was published in 1988 and is still phenomenal at teaching the fundamentals of CS: primitives, branching, structures, etc. C programming is daunting at first, but future you will appreciate learning CS from its basics as C is about as barebones as you'll want to get. After finishing it you'll learn the majority of what you need to know to begin learning other languages quickly. Run every example in an environment of your choice to see for yourself whats going on in them. I recommend using this online compiler to run the examples as figuring out what programs to use to actually run the code is difficult for a beginner.

u/TrainFan · 2 pointsr/EngineeringStudents

If you mean this one, then YES, it is an EXCELLENT book. Highly recommended.

u/LiterallyCarlSagan · 2 pointsr/argentina

Podés probar aprender C, que está bueno si queres saber como funciona un idioma de programación a nivel mas cercano al hardware. Si ya sabes programar podes usar este libro para aprender.

Mas adelante en la carrera me parecen que ven Haskell, pero probablemente sea demasiado avanzado si estás empezando.

u/eric_weinstein · 2 pointsr/learnprogramming

C books I've found useful:

Beginner

u/Adams_Apples · 2 pointsr/learnprogramming

&gt; Maybe now is a good time to step back and consider what kind of programming job you might want to target.

This is definitely something you should keep in mind. Try to become really awesome at one thing. That's not to say you shouldn't have a well rounded education in programming, just that someone who is simply ok at everything isn't getting a job anywhere.

Here are a few texts which I consider to be great for a novice programmer:

The C Programming Language : ANSI C

It's an older book, but it's still the best book to learn the language.

C++ Primer : C++

I used this book to get started with C++, and found it to be easy to follow and informative. Some say it's not a beginner book per-se, they may be right. I was already very familiar with C when I started.

Objective-C Programming: The Big Nerd Ranch Guide : Objective-C

If you're planning to write apps for Apple's iOS and OS X platforms, you're definitely going to need to learn this. Otherwise, don't bother.

Algorithms : Algorithms / Data Structures

This is not the be and end all authority on algorithms, but it's a great book. It's less theoretical and more concrete in my opinion.

I don't feel qualified to give recommendations for other topics like Java or web development, as those aren't really my strong suits. Happy hunting!

u/xLittleP · 2 pointsr/programming

Geez. While it's good to hear that everyone else's copy of K&amp;R is tattered, too, I can't help but feel bad for how tattered mine is. It's been rained on, ran over with a car, left out in the yard for weeks, and used as a coffee mug coaster lord knows how many times.

I should probably honor him by picking up another copy today.

u/petrithor · 2 pointsr/simpleios

&gt; (assume i have programming background in javascript/web front end.)

Um, are you sure you're ready to jump into iOS development?

Unless I'm reading this incorrectly, it doesn't seem like you have any C or OOP (like Java) programming experience. You'll definitely want to be at least comfortable with C-like syntax and message-passing, inheritance and objects, etc.

Actually, I'll have you answer that for yourself. Watch the first lecture in the iOS dev series from Stanford on iTunes. Around minute 11 the professor goes over what concepts you need to understand in order to be able to follow along with the course. If you don't understand all of the concepts listed, then you aren't ready yet.

Also, you've got to have a Mac. Have at least a Mac Mini (which are the cheapest Macs you can get refurb'd / used).

Here's what I would do assuming I am correct about your programming experience:

1. Learn C on the Mac.

It's for beginners, and will go over the basics of C. Objective-C, the programming language for iOS, is a strict superset of C, so they share a lot of syntax.

1.a The C Programming Language (recommended)

This one isn't for beginners, and is a bit stale, but is the de facto book for learning all of the intricacies of C. While it isn't absolutely necessary, the better you understand C (including pointers, memory, etc.), the easier time you'll have with iOS dev. I absolutely recommend going through it in its entirety, though this isn't necessary. It'll also be good to know C in the future if you plan to pursue software development.

2. Programming in Objective-C

This will teach you Objective-C, related OOP, and using XCode 4.

3. Beginning iPhone 4 Development

This will probably rehash some stuff related to Objective-C and XCode, but for the most part is a great introduction to iPhone development.

Use this book in tandem with the Stanford lecture series. Read the first few chapters, watch the first 2 lectures, do the homework exercises as if you were in the course along with the examples from the book, and just go from there. There might be some redundancy, but I think the combination of reading, listening, and doing will really help you understand the material.

If you need short tutorial refreshers at any point, Cocoa Dev Central is a great resource.

From there, you should be able to start making your own apps, and just use Google, StackOverflow, and http://developer.apple.com/ for all of your questions not previously answered or if you get stuck.

As you go through the process of learning all of these new programming concepts, try to develop ideas for what apps you want to develop. As you learn more, try to piece together how you would accomplish certain aspects of the ideas, and if you can, maybe even code the bits (like certain functions) you can.

There are no set milestones.. it's a gradual process of learning and getting better at programming and iOS development. Your goal should be to just create your own working app entirely based of your own ideas and work.

u/Waitwhatwtf · 2 pointsr/programming

For iOS devices, you're going to want to start here, this will get you familiarized with the NeXtStep family of jive turkeys, followed up with a more formal introduction to Objective-C. I'll be honest, having some working knowledge of C will never hurt you, so after you're done with that, take a peek at K&amp;R.

If you're aiming for Android, you have a bit of a different education outlook, I'd recommend brushing up with Head First Java. When I started poking around with Android, I read Hello, Android most of it should be still pretty relevant. I'm not entirely sure if it has been updated as of late, I outgrew it rather quickly, and if you do too; pretty much anything and everything by Mark Murphy is relevant. Best of luck!

u/baultista · 2 pointsr/learnprogramming

I've always felt like C is a good language for a programmer to think in. With that being said, I often recommend that a programmer who doesn't need to know C++ learn C if (s)he wants to learn something that will improve his/her skill across the board.

C will give you a good appreciation of what's going on behind the scenes in many of the languages you use. You'll get an appreciation for how passing by value and reference works in other languages thanks to pointers. You'll learn how your strings are actually managed in memory. You'll have a better understanding of how many of those built-in generics you may use (List&lt;&gt;, LinkedList&lt;&gt;, HashMap&lt;&gt;) actually work, because if you want to use them in C you'll have to implement them yourself or download a source file and read it to understand the author's implementation.

This knowledge will help you build more elegant solutions. You'll be less sloppy and gratuitous creating new strings anywhere and everywhere, and may even find yourself using references more often. Your code may or may not be cleaner, but you'll have an appreciation for how and why you should write code for runtime efficiency. You'll be more likely to use the right data structure for your task at hand.

The best part is that C has a great standard resource for learning the language. Pick up The C Programming Language Second Edition and read it cover to cover. By the time you're done you'll know everything you need to know about C, and will have a wonderful reference in the even that you need to use C later on.

If you want to improve your object-oriented programming skills, you don't need to learn a new language. It is best to learn OO independent of any language in order to gather a strong understanding of the underlying concepts and to be able to apply it to any language. Craig Larman's Applying UML and Patterns is the best book I've ever read on the subject.

u/cheese_wizard · 2 pointsr/Python

the static could mean that, hard to tell with this line in isolation. If it's inside a C++ class, then your assumption would be correct.

For all C-only related topics, nothing beats this:
http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

u/MarioneTTe-Doll · 2 pointsr/learnprogramming

Here's the link in case anybody is interested in it.

u/bookingly · 2 pointsr/learnprogramming

I don't know what your background is, if this is your first object-oriented language or what. I have gotten a better understanding of programming over the last couple of years, so I may not have the best recommendation, but to refresh on Java, I have found these videos from [Cave of Programming] (https://www.youtube.com/playlist?list=PL9DF6E4B45C36D411) to be pretty awesome.

Very simple, incremental videos that illustrate basic and fundamental concepts pretty clearly for me. Note that there are not quizzes, but by manipulating the programs provided and really making sure one understands what the speaker is presenting, I think one can get a basic understanding of some key aspects in Java programming. If you enroll in the course in Udemy, you may be able to get feedback (haven't tried though to be honest; the course is also free on Udemy).

That said, it wasn't until I started taking some C that I found I understood the Java better; there are some things happening under the hood with Java that I never quite understood until I got to a lower level language like C (and maybe it just took that much exposure, repetition for it all to click).

I took a university course in C, but I am going through a Udemy course on C by Huw Collingbourne that may give a decent overview.

All that said, I do find that I like a mixture at times of watching somewhat more shallow expositions like the video series listed above, but then also enjoy finding some written resources that go into a bit more detail. Check out the Java tutorials for Java. For C, there is [this] (http://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628), which was written I think by the two main guys behind the programming language itself.

u/OdwordCollon · 2 pointsr/funny

The C Programming Language 2nd Edition. There is absolutely no better way to get into programming that this book. Starting with something like Python or Java will only hurt you in the long run because they obscure certain details that are fundamental to programming.

You won't be making anything flashy right off the bat, but you'll have a much more thorough understanding of programming and it'll make transitioning to other languages and techniques easier.

u/grbgout · 2 pointsr/C_Programming

Holy f... it's the beej.

Are you really he? I think I've downloaded all of your guides, but I must confess to having read none — someday, though, someday.

As to the OP, mark another down for K&amp;R's 2nd edition. Be careful if you're looking online for a PDF, there's one floating around that doesn't match the physical copy. I found, and sent, a PDF to a friend who discovered an error, which didn't exist in my physical copy.

All the more reason to shell-out money for the real thing! I only went searching since the binding on my copy is starting to go, and I don't want to add further wear.

u/satysin · 2 pointsr/C_Programming

If you are a total beginner then read C Programming Absolute Beginner's Guide, Third Edition by Greg Perry &amp; Dean Miller
https://www.amazon.co.uk/Programming-Absolute-Beginners-Guide-Guides/dp/0789751984

If you have some basic experience in another language such as Python, Visual Basic, JavaScript, etc. then read Programming in C, Forth Edition by Stephen Kochan
https://www.amazon.co.uk/Programming-Developers-Library-Stephen-Kochan/dp/0321776410

If you are comfortable programming in another language such as Java, C#, Python, etc. then read The C Programming Language, Second Edition by Kernighan &amp; Ritchie (also known as the K&amp;R book)
https://www.amazon.co.uk/C-Programming-Language-2nd/dp/0131103628

u/edmaddict4 · 2 pointsr/EngineeringStudents

Here is a decent tutorial for c++ and others programming languages: http://www.tutorialspoint.com/cplusplus/index.htm

This is the book that i learned c with. I think theres a free pdf online if you google for it: http://www.amazon.com/The-Programming-Language-2nd-Edition/dp/0131103628

u/srnull · 2 pointsr/programming

&gt; Do you recommend "K&amp;R C" (can't find that book anywhere)

It's the first result if you type K&amp;R C into Amazon: The C Programming Language, 2nd Edition.

&gt; more than "Pointers to C"?

This doesn't exist, so I have no idea what you're asking.

u/thenameunforgettable · 2 pointsr/gamedev

PS, when you get a chance, read "The C Programming Language" by K&amp;R. Those are the guys that invented C. Ritchie recently died, sadly. ANYWAY just about every modern computer language is written in C. Java, C++, and so on all use it as a base, and C++ really isn't very far off from standard C.

There WILL be obtuse parts in the book you probably won't understand at first, but it's great to understand everything you can do with the language.

I've also seen you're a little confused by why you're doing Hello World stuff... It's mostly because printing a line to the terminal is a way to give you quick feedback with little/no overhead, or what we tend to call boilerplate code. To get a visual set up just to show a message (in Java) is probably around 60 lines of code that will make 0 sense to you right now.

Also, that same feedback - the quick and dirty console print - is a great way to check if your concept is correct. Let's say you write a simple physics engine for your game. You want to make sure you're getting expected values, and you want to do it quickly. Rather than re-launch the entire game EVERY time you tweak the engine, you run a smaller set of code that tests just your physics engine.

Imagine Mario-like movement - jump up and fall in 2d. If you print the Y position every, say, 500 milliseconds (.5 seconds), you would expect values like "0.0, 1.1, 1.5, 2, 1.5, 1.1, 0.0" which would indicate it went up rapidly, stopped at 2, and fell back at the same rate. It's obviously not the same as a visual feedback, but the first time you write the physics engine you might get something like "0.0, 1.1, 1.5, 2, 2, 2, 2" which is CLEARLY incorrect. Something isn't triggering properly! This happens all the time, and a quick check like that helps you diagnose what you did wrong while wasting minimal time running the program.

u/eco_was_taken · 2 pointsr/SaltLakeCity

Umm, I think Python is a good language to start with. It's forgiving and low on boilerplate code. I haven't read it but Learn Python the Hard Way by Zed Shaw is supposed to be decent (and it's free online). I didn't like Learning Python published by O'Reilly. I'd just read reviews on Amazon if Learn Python the Hard Way isn't working for you. Whichever you end up with, I recommend typing all examples from the book into the computer by hand. Something about doing this really helps make things stick in your head. You'll also make the occasional typo and have to debug your program which is something we programmers spend more time doing than any of us care to admit.

I think it is important to try to think of something you want to make and have it in mind while you are learning the language. It can be any software but I recommend a video game. They are really good for this because you can just think up a simple concept or implement your own version of an existing game. Having a goal makes it so you are constantly solving the problems you will encounter while trying to reach that goal which is the most important part of programming (more so than learning the syntax of the language). This is actually the highest rated Python book on Amazon and is all about gamedev with Python.

After you've learned Python to the point where you are comfortable (no need to master it), learn other languages to grow as a programmer. Once you've gotten a couple languages under your belt it's actually really easy to learn even more languages (unless it's a very odd language like Haskell, Lisp, or Brainfuck). The problem solving skills you've acquired often work in any language and you learn some new techniques as you learn new languages.

u/ErstwhileRockstar · 2 pointsr/programming

274 pages actually.

u/Deinumite · 2 pointsr/IAmA

Python is great, there are tons of resources online for learning it, because the OSS community is in love with it.

Also Django is python for web apps if you are so inclined.

As for C, the "C bible" is a must have. Read this book and do the examples and thats all you need really.

http://www.amazon.ca/Programming-Language-Brian-W-Kernighan/dp/0131103628/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1267067483&amp;amp;sr=8-1

u/minond · 2 pointsr/webdev

Not really related to mobile development, but he should still really enjoy these if he hasn't read them already:

u/mocacola15 · 2 pointsr/UGA

if you wanna get a jump start on the material now then go for it. The book they're gonna make you buy is "The C programming language" by Kernighan and Ritchie. It's widely known as one of the best programming books ever written and It's actually very useful for the class, so you are going to have to buy it eventually. I wouldn't bother with anything other than that and the other books they might make you buy though

&amp;#x200B;

https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=sr_1_2?ie=UTF8&amp;qid=1539738086&amp;sr=8-2&amp;keywords=the+c+programming+language

u/cunttard · 2 pointsr/C_Programming

(Just an aside comment: when I saw this post it was at 0 points. I have no idea why this post or the poster is getting downvoted -- it is legitimate curiosity to link C to computer science and garner interest in CS/programming languages. So what the fuckity fucking fuck?)

  1. I think this old post is the essence of Computer Science. (I have it saved for quick referral.)

  2. They are text editors. If you're not comfortable with command-line text editors use something else. Both are incredibly powerful. Emacs more-so. Both have steep learning curves. I'm partial to vim and there's a great tutorial here (see the long IRC style tutorial).

  3. No. You can learn basic constructs but each language is different. C++ is a completely different beast to C. I'm not sure if this was a joke but Bjarne Strousop (the inventor of C++) claims he his knowledge on C++ is 7/10. C is great to have on your resume because it assumes you have skills with systems-level and low-level programming. It is also used heavily in the embedded world.

    However if you're developing applications you might look towards using a different language such as C++, Java, Python, Cocoa, Swift, etc. If you're doing numerical/scientific work you might do it in Matlab. C is definitely not a good choice for writing a web application. You pick the language you use appropriate for the type of goal/task you're trying to accomplish

  4. I recently learned about this book on this very subreddit and have been recommending it to real life friends. Deital - C: How to program is an accurate book on C with a modern introduction. Most people will say to read K&amp;R C which is considered the bible, but I find it a dull read (but a fantastic reference if you need to understand certain aspects of the language -- such as what is a volatile or a register keyword).

  5. Good luck. I highly encourage Computer Science. However try to go into the field thinking about "solving problems with computation" rather than "learning programming languages." I feel like people miss the bigger picture of Computer Science. It is a wonderful field with a rich theory. Languages are tools to help you express those computations. In theory programming languages are computationally powerful as each other (or what we call turing-complete) and don't have a concept of speed. In practice the choice of language defines how you wish to express things and implementations of languages typically have different speeds (usually C is incredibly fast because it is closest to machine code/assembly).
u/Deciama · 2 pointsr/hacking

No its not a stupid question. Most people like the K&amp;R book, which is like the C bible. Link

I recommend checking this out, it has a ton of recommended C books for beginners and Intermediate.

u/ivansonofcoul · 2 pointsr/learnprogramming

General:

Pragmatic Programmer

C language



This one is a lot tougher read and is probably one of the most famous book sets in Computer Science
Computer Programming Don Knuth

Edit: fixed spacings

u/kisuka · 2 pointsr/Ragnarok_Online
  • rAthena
  • Hercules
  • Git
  • C
  • C
  • C++
  • C++
  • Linux
  • Client Hexing
  • PHP
  • FluxCP

    There's a few resources. Ultimately it comes down to you sitting down and playing around with all this stuff. Sure you can watch courses, read books, etc but the best learning experience comes from using the programming languages, operating systems, setting up the server emulators, etc.

    Keep in mind that you won't learn everything overnight. I started my time with all of it back in 2005. Wasn't until around 2009 that I had a firm grasp of most of these concepts and turned it into an actual career path. These are all skills that can be used outside of RO stuff.
u/wesatloldotcat · 2 pointsr/learnprogramming

https://learncodethehardway.org/ and https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628

LCTHW is more contemporary, and written by an author who may or may not be banned in this sub, it has fairly strict pedagogy, but may be more approachable for you. K&amp;R C is the definitive book on C, though it's old and slightly dry at points, I don't know your syllabus, but I think K&amp;R C would supplement well.

I've never used Visual Studio, but I've heard that Microsoft makes great development tools. These videos may help https://www.visualstudio.com/vs/getting-started/

Also, as general advice, consider starting with something other than C. It's fairly low level compared with other modern languages, and tends to be used to low level systems programming (consumer electronics or operating systems), or as a foundational knowledge to be learned but not used daily, similar English and Latin (I'm sure this analogy will piss off someone somewhere).

I'm only guessing at your goals as a biologist, but a less computational efficient but scientifically applicable language like Python or R may be a better fit.

u/Chomskyismyhero · 2 pointsr/learnprogramming

Head First Java

Thinking in Java

Effective Java

Java Concurrency in Practice

Best $150 you'll ever spend. Read in order listed.

u/oorza · 2 pointsr/javahelp

Read, in this order:

  1. Thinking In Java.

  2. Effective Java

  3. Java Concurrency in Practice

    Those three books should get you wherever you need to be, without getting more specific books (e.g. framework books).
u/ryosen · 2 pointsr/javahelp

Java is a great language to start out with and I would recommend two books to get you running. Since you are new to the language and programming in general, start with Head First Java. Then, move on to a more advanced treatment like Core Java. Thinking in Java is also very good but it's dense and some people have a difficult time digesting it.

Once you have the basics of the language down, learn about working with databases. Then, move on to server-side development as that's where the jobs are.

Despite the similarity of their names, Java and JavaScript are not similar and cannot be used interchangeably. JavaScript is primarily used in UI development in web browsers, although server-side implementations have existed for almost as long as JavaScript itself. Currently, the most fashionable of these implementations is node.js.

Lastly, since you are looking to work professionally but without any formal education, know that you are going to have a difficult time getting work for the first several years. You might find that learning JavaScript (and HTML and CSS) are a quicker route to finding a job as front-end web developers often do not require a college degree, whereas Java programming jobs invariably do.

u/xpyter · 2 pointsr/gamedev

this is the best java book i know: http://www.amazon.com/Thinking-Java-4th-Bruce-Eckel/dp/0131872486 should have anything you need.

u/siedler084 · 2 pointsr/learnprogramming

Heres something from an older reddit thread asked in /r/ruby and it suggest the book The Little Schemer to help you think recursive, if you got that down I guess writing your own recursive code is less of a struggle, I cannot however tell you how good that book is, so you should do some research on that yourself.

u/paultypes · 2 pointsr/programming

FWIW, the "applicative order Y-combinator" is the punchline of The Little Schemer, which I highly recommend.

Most explanations of it describe it as "how you do recursion without names," which is a good enough operational description, I guess. What it really is, historically, is the proof of Curry's paradox, a simplification of a proof that was originally arrived at by Alonzo Church's grad students, Stephen Kleene and John Rosser, as a demonstration that the untyped lambda calculus is logically inconsistent.

In other words, its significance isn't as a tool for implementing general recursion. Its significance is as a proof that the untyped lambda calculus isn't useful for what it was originally intended (i.e. use as a formal logic), and motivates the introduction of type theory in logic and computer science.

u/ryanklee · 2 pointsr/learnprogramming

The Little Schemer. After you read that book, in addition to having had a car load of fun, you'll be pretty good with recursion, which is all that book basically teaches. It's pretty slim, around 100 pages IIRC. You could knock it out in under two weeks if you worked at it. Man, I love that book.

u/justsomebuddypal · 2 pointsr/learnprogramming

Program anything. The choice of IDE (JCreator) isn't very important. Try debugging a program if you've never done that. If you're on *nix, check out GDB and valgrind.

Your profs have probably set up the course structure for 4 years to work a certain way. Some where down that road (2nd semester for me after AP comp sci) I had to take Programming Languages and we used Scheme. Functional programming feels entirely different from imperative. I would suggest buying a copy of The Little Schemer. It is one of the few programming books I'll probably keep forever, and it doesn't break the bank. It will also open your mind in CS.

u/fnord123 · 2 pointsr/programming

Many others have answered this sufficiently but as it's your gf taking the course I thought I would chime in to suggest picking up The Little Schemer which is a cute book for informally learning the language and you will pick up cute-points.

u/burke · 2 pointsr/IWantToLearn
u/ccc123ccc · 2 pointsr/programming

The Little Schemer

This book is a great tutorial for "programming" in lisp just by reading the book. You can learn "lisp as a concept" more than lisp for work.

u/twolfson · 2 pointsr/Frontend

The Little Schemer was a good read when I wanted to learn about recursion. It cleared everything right up =) Only the first few chapters are necessary:

http://www.amazon.com/The-Little-Schemer-4th-Edition/dp/0262560992

u/jerslan · 2 pointsr/cscareerquestions

Buy up all remaining copies of Java Puzzlers: Traps, Pitfalls, and Edge Cases and then re-list them for twice the price.

u/LucidityWaver · 2 pointsr/learnjava

This seems to have been recommended quite a few times on Java related subreddits: http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601

u/el_chief · 2 pointsr/java
u/KagakuNinja · 2 pointsr/learnprogramming

I personally always use an IDE, because you will soon discover that there are dozens of libraries used by real world projects, and you cannot possibly know everything about them. However, IDEs have options to turn off autocomplete, incremental compilation and syntax highlighting, if you are a masochist... Google is your friend.

I read Algorithims in C++ by Sedgewick, and it was great, but not important for learning to code. You need to know the basic concepts of: the Java standard library, especially collections, looping constructs, etc. Any good tutorial should cover these. General CS knowledge is great and you will be quizzed about it in interviews. However, not necessary when starting out.

Eventually you will need to know about the Java memory model, concurrency and thread safety this was the Bible back in the day, maybe there more up-to-date options.

Math is an interesting topic; in college, you have to learn calculus, which is where many of us decide that we don't like math. This is a pity, since programming is applied math. Also, math gets more interesting, but often weird, when you start studying upper division topics.

Most data structures are based on set theory and relations, which are taught in Discrete Math. To understand what a function is, you need to know about Set Theory and/or Category Theory. Category Theory is fascinating, and particularly important for understanding functional programming. This is a great resource. To understand graphics, you need to know about Geometry and Linear Algebra.

It also helps to understand the basics of Probability, Combinatorics and Abstract Algebra. All of this math is advanced stuff however, most programmers don't need to know any of that...

u/TheStudyOf_Wumbo · 2 pointsr/UofT

I type too much so I needed a second post

---

&gt; And lastly, do you have any sources that you used to read up on multithreading?

I recommend doing the following:

If you know Java and want to see all the ways you can strangle yourself, this book has a lot of great things in it. It's quite readable and will likely scare you (for good reason...) into how dangerous multithreading can be. The book is hefty and requires Java, but the information is very practical.

If you want CSC369 notes from a really good textbook, the following chapters are relevant:

http://pages.cs.wisc.edu/~remzi/OSTEP/threads-intro.pdf

http://pages.cs.wisc.edu/~remzi/OSTEP/threads-api.pdf

http://pages.cs.wisc.edu/~remzi/OSTEP/threads-locks.pdf

http://pages.cs.wisc.edu/~remzi/OSTEP/threads-locks-usage.pdf

http://pages.cs.wisc.edu/~remzi/OSTEP/threads-sema.pdf

http://pages.cs.wisc.edu/~remzi/OSTEP/threads-cv.pdf

http://pages.cs.wisc.edu/~remzi/OSTEP/threads-bugs.pdf

http://pages.cs.wisc.edu/~remzi/OSTEP/threads-events.pdf

You can casually read the above. You don't need to actively code or anything... and the style is very laid back and enjoyable to consume. Each chapter should take you ~40-60 minutes to do, so you can do one a day over the summer and be done in a week.

If you want the 369 notes, these are relevant lectures which cover the above chapters:

http://www.teach.cs.toronto.edu/~csc369h/winter/lectures/w3/L3-Synch.pdf

http://www.teach.cs.toronto.edu/~csc369h/winter/lectures/w4/L4-Synch.pdf

The above may be a good refresher after you've done the textbook spam I posted above.

All of these links are from the CSC369 webpage here: http://www.teach.cs.toronto.edu/~csc369h/winter/lectures.html

LASTLY make sure to read up on the language you plan to use and explore its concurrency library.

Now that you have the knowledge, go write something that does this. Find a cool topic where you have tasks that could use multiple threads to go faster and make some cool stuff.

=============================================

Some final notes because this took a while to type up and I have to go have lunch:

  • Don't throw your health away over stuff (start exercising and eating healthy)

  • Do not mentally burn out over the summer while doing this

  • You will find you will only succeed at projects you are excited for, if you choose to make a project without really high enthusiasm you will burn out and hate yourself... so find something really interesting

  • Talk to other programmers if you can, become friends with lead devs in projects if possible

  • I'll say it again because it's very important, avoid burnout... don't do more than 8-9 hours of hard work per day, you probably won't absorb the rest anyways

    I didn't proof read anything so enjoy the typos, spent too much time writing posts

    EDIT (I lied): Don't forget that luck plays a large factor in the interview, you can have everything and you could be asked some stupid question. Therefore it's not worth killing yourself over since you could grind like mad and have luck just not be on your side (and this is why you should apply to as many companies with interesting jobs as possible)
u/stefan_kurcubic · 2 pointsr/Clojure

i've been looking for comprehensive guide on clj concurrency

today i got https://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601

thank you for this

u/xpto123 · 2 pointsr/java

I think Java Performance and Java Concurrency In Practice are two of the main ones. Especially JCIP is the reference for concurrent programming.

u/nutrecht · 2 pointsr/cscareerquestions

If you've worked with Java before this is a great book

u/jopforodee · 2 pointsr/androiddev

I highly recommend Java Concurrency in Practice if you don't mind buying a book. http://smile.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601

It really demystified threading for me and I felt more comfortable with when something should be synchronized.

u/vix86 · 2 pointsr/learnprogramming

If you are using concurrency a lot then it might be worth it to take a look at: Java Concurrency in Practice (I believe that's the book I've seen recommended before.)

It's a little old but still mostly valid.

u/chemosabe · 2 pointsr/java

&gt; Oh boy, I know nothing about either of those things.

Get this book pronto. It's essential.

u/kanak · 2 pointsr/AskReddit

Depends on your experience. If you haven't programmed before, I think Big Java would be a good book to start with (it's the book MIT's Civil Engineering Dept uses to get them up to speed with Java). If you've programmed before, you're better off doing the official java tutorials followed by Core Java 1 and Core Java 2.

Regardless of the path you take, if you intend to do ANY kind of "serious" java programming, Effective Java is a must-read.

Finally, you'll want a good reference book. Gosling's Java Book is the definitive one, although you might prefer a book by O'Reilly.

u/mstoiber · 2 pointsr/web_design

Sorry, ran out of time. Here's the rest of my answer:

If you are more of an engineer and not that interested in design, but in Front-End Development, start with Bulletproof Web Design, following up with Transcending CSS.

For JavaScript, read You Don't Know JS and Eloquent Javascript. (The second edition of Eloquent is going to be released on 17th of november, if you can't wait until then, there's a first edition aswell)

A very important design book I forgot aswell: The Design of Everyday Things.

Good luck on your way to mastering Web Design!

u/dsizemore · 2 pointsr/django

Thanks, I appreciate that. I started doing front end stuff probably 12 years or so ago right when I was finishing college. I got started with these two books:

http://www.amazon.com/CSS-Mastery-Advanced-Standards-Solutions/dp/1430223979

http://www.amazon.com/Bulletproof-Web-Design-flexibility-protecting/dp/0321509021

That's about it, really. I do browse some of the top blogs and try to find inspiration though and see what kind of layouts everyone is doing these days.

I'm guessing they're pretty outdated right now though. Aside from that, I just try to not over complicate things in the design and keep it as simple as possible. I'm not someone who's going to spend hours designing some award winning illustration for the website header; I just try to pick a nice color palette (usually two at most three colors) and then lay out the site with some common sense. One big thing I've found is ensure you're using enough padding/margins. I think too many times people only have 5 or 10px between elements and it makes it really difficult for your eyes to flow over the site. That's just my opinion though.

Hope that helps.

u/xSinxify · 2 pointsr/HowToHack

Both posts here (so far) give good advice in terms of learning assembly. I personally used the OpenSecurityTraining course that was linked by /u/miguelhgn to fill in gaps I had in assembly, and I second his advice to check that one out. If that course proves to be too steep, I'd take a step back and learn a bit of C -- so that you can better understand the context of the assembly you would be reading. For free resources, I generally like to recommend https://publications.gbdirect.co.uk//c_book/ or http://users.cs.cf.ac.uk/Dave.Marshall/C/ as they're iso-9899 recommend free resources that cover a pretty good scope when it comes to C itself.

If you'd prefer a more textbook style of reading, and don't mind shelling out money, I generally recommend C Programming: A Modern Approach above anything else that's out there, but it's far from necessary to get this if you find that you learn from the free resources just fine.

As for recognizing patterns in assembly over time as mentioned by /u/poindexter_one, that would best be implemented by using https://godbolt.org/ imo, and starting with smaller C snippets, trying different compilers and optimization levels, and gradually doing the same with more complex code. A good exercise when you start to get good at that, is to also try to do the same thing in the opposite direction (Seeing assembly, and trying to construct C code from it, AKA a part of reverse engineering)

As for your question "Should I learn Assembly language?" depends on where your interests lie, and what you eventually want to learn / be able to do down the line. It's absolutely a good thing to be able to understand though.

u/sastrone · 2 pointsr/java

Hey, I'm also learning C as well. I have spent the last 4 years with Java and wanted something more lower level.

I picked up a copy of C Programming A Modern Approach and have been completing one chapter a night. And by one chapter a night, I mean reading the chapter, taking notes on stuff that I don't get, and doing all of the programming projects. Even the early chapters that are super easy, I figure that it will help me learn the syntax so that I'm not screwed later.

If you have the time to learn slowly like me, I really suggest it.



As for practicing C online, as far as I know, that is impossible. C is way too destructive to allow people to compile and run it on some server.

u/sidcool1234 · 2 pointsr/technology

I suggest this book

u/Bifrons · 2 pointsr/learnprogramming

I used an earlier version of this in my first C programming class: http://www.amazon.com/C-Programming-Modern-Approach-2nd/dp/0393979504/ref=sr_1_1?ie=UTF8&amp;amp;qid=1311251965&amp;amp;sr=8-1

It was ok, but I find myself referring to the K&amp;R book more on projects. It's just better in every way. Not that the first book was bad by any means.

I don't know if this is good, but here's a free book: http://beej.us/guide/bgc/ It's by the same guy who did the Beej's guide to Network Programming (http://beej.us/guide/bgnet/), which I highly recommend if you want to get into network programming at any point. This book was instrumental in me passing my network programming class.

Second, don't use an IDE like Eclipse. Use a text editor (my preference is VIM) and GCC. You'll learn more. Once you get the basics down, then learn an IDE.

Finally, as Madsy9 pointed out, look into revision control (Git, Subversion, CVS, etc) at some point. However, I would learn a bit about the language first before using revision control. In my CS curriculum, we didn't touch revision control until Operating Systems in my third year. Previously, we learned C and simple data structures (linked lists and the like) before touching revision control. Then again, CS != Software Engineering, so I could have been taught completely wrong on this.

u/pushme2 · 2 pointsr/learnprogramming

To be honest, I would suggest some other book first (kochan and king are good enough), then reference/read that book if you have problems or just want to say you read it.

K&amp;R is old, and while still mostly accurate, and can teach you C, there are books that are better suited for teaching people learning C in this century. One thing that the newer books lack usually is explaining old stuff. For example, many books don't sufficiently explain how the input and output buffer works.

I do think it's a good idea for people actually doing stuff with C to eventually read K&amp;R, but starting from the basics, you might want a gentler approach.

u/jantari · 2 pointsr/sysadmin

Buy 2-3 good books on the C programming language and get really good with it. I personally read this one and liked it but it's not introductory in my opinion so start simple.

For system administration good python, bash and a surface-level understanding of C are enough

u/youngoli · 2 pointsr/learnprogramming

As everyone said, start with a book. C++ has a lot of cool features and a lot of really advanced things can be done with it, but before you start with any of that you're gonna need to learn the basics. It took me a year to understand most of the "basic" C++ concepts, so don't expect to have the quick learning curve that you would get in Python/JS.

However, I also strongly recommend you start by learning C before C++. I feel that C++ has too many advanced features wrapped around C, and you get into that confusing situation where a lot of C++ expects you to know how the low-level stuff works (especially memory allocation), while at the same time hiding it so much that you probably won't learn it. I suggest picking up some highly rated book on C and learning everything until you at least know how pointers and dynamic memory allocation work. Then you're free to go crazy with the C++.

PS: I recommend this book:
http://www.amazon.com/C-Programming-Modern-Approach-2nd/dp/0393979504/

u/Broinz · 2 pointsr/C_Programming

I too started with C as my first language using K&amp;R and "learn C the hard way" but i abandoned both halfway. I've started from beginning with "A modern approach to C" as my main source and C: A Reference Manual as, well reference manual when i wanted more in depth knowledge about particular subject. After you're done with Modern approach you should go back to K&amp;R and finish it in order to have your foundation properly rounded.

Edit: I should add few more resources that generally helped me a lot when I started:

http://c-faq.com/

C Traps and Pitfalls

C Standard Library

Things you should avoid in C

A Guide to Undefined Behavior in C and C++

u/shinigamiyuk · 2 pointsr/cscareerquestions

Agree. Change your degree and focus on CIS or CS even for the AA. You could still get an AA in CS and transfer to a 4 years school and only have two years left.

For reading like ender08 said you need to know if it is java, or c++ track, but I would still read C Programming: A Modern Approach, this book is amazing. Take notes, and type out each example in either an IDE or text editor.

u/dsampson92 · 2 pointsr/AskElectronics

&gt;2. If it's not too difficult and something that could be learned over a few months (minus full time work), what sort of subjects, books, pdfs, wikis or other resources would I need to be looking at to get started? I'm a web designer so this isn't really my field... but if there's a specific area of electronics that covers this sort of project, it'd really help to find out.

It is too difficult to do in a few months, but if you are really interested in learning, follow the curriculum of an Electrical Engineering BS. First you need to know calculus, this would be a good place to start, get the used version of course. Alternatively, watch the Khan Academy videos for calculus and find some problems to practice, though this will be less thorough.

Once you have gotten to integrals, start your calculus-based physics education. There is no point in really starting before, as algebra based physics isn't terribly useful for actually understanding things, and you will have to relearn it all with calculus anyways. Halliday and Resnick is a fairly good intro text that includes calculus. The one I linked is just the E&amp;M sections, you can learn the mechanics stuff from Khan -- you just need a cursory understanding of the mechanics. Unfortunately the Khan videos aren't very good for E&amp;M, they are generally too algebra-based. Last I checked he doesn't even cover Gauss's law.

After that you will need some Linear Algebra, Differential Equations, Digital Logic, Circuits, and programming just to round out your fundamentals. Now you are roughly 2 years into a basic ECE curriculum, ignoring a lot of filler courses as necessary.

After this it gets a bit more flexible.

Textbooks on Signals and Systems, Microcontrollers/Microcomputers, Antenna Design, Embedded Devices, Electric Networks, and Digital System Design should round out your education. However that doesn't mean you know what you need to design what you are thinking of -- you also need to get a bunch of real world knowledge and practice. Make a few basic devices, get them manufactured, just to get a feel for the process. Delve into the various IEEE standards and UL standards to learn what you need to do to produce a device that can be sold and will be compatible. You have a lot of research ahead of you, so good luck!

u/pythonaut · 2 pointsr/learnprogramming

I recently bought C Programming: A Modern Approach, and it has been fantastic. It has a lot of exercises in each section, and an extremely helpful Q&amp;A section for each chapter that clarifies a lot of common problems. It's easily the best programming book I've dealt with so far, though really I've only been through four or so.

u/rotzak · 2 pointsr/AskReddit

Actually, as a recent Computer Science graduate, I agree with this quite a bit. Getting a degree in Electrical Engineering, with perhaps a minor in Computer Science, really opens a lot more doors for you. A lot of the embedded (and generally systems) development jobs I've seen/applied for recently prefer EE candidates to CS candidates -- some won't even consider CS candidates. While the web development industry is big, generally speaking if you have any experience with development you can work in the web world (especially in a junior role) but it takes specialized experience to work in the embedded/systems world.

What you DON'T get from an EE degree alone is discipline in Software Engineering, some of the things like theory of computation and algo. analysis, but if you can hack an EE degree you can pick these up rather easily. Of course, this point is likely moot if you get a minor in CS but that depends on the specific program.

Anyway, I recommend Big Java, it's what I learned on and gives a pretty solid intro. to OO development in general.

u/EmperorsNewClothes · 2 pointsr/Physics

In addition, this book will save your life. With a good programming base, it's almost like cheating.

u/EorEquis · 2 pointsr/astrophotography

&gt; I have struggled with noise reduction in PixInsight and even when I used Photoshop.

I think most of us (I KNOW I do) have the same difficulty, and it boils down to...well, quite frankly, to wanting our amateur images to look like Hubble results.

Harsh though he can sometimes be, I think Juan Conejero of the PixInsight team said it best :

&gt; A mistake that we see too often these days is trying to get an extremely smooth background without the required data support. This usually leads to "plastic looking" images, background "blobs", incongruent or unbelievable results, and similar artifacts. Paraphrasing one of our reference books, this is like trying to substantiate a questionable hypothesis with marginal data. Observational data are uncertain by nature—that is why they have noise, and why we need noise reduction—, so please don't try to sell the idea that your data are pristine. We can only reduce or dissimulate the noise up to certain limits, but trying to remove it completely is a conceptual error: If you want less noise in your images, then what you need is to gather more signal.

Admittedly...agreeing with Juan doesn't mean I'll stop trying to "prove him wrong" anyway. I'll still mash away at TGVDenoise until the background looks like lumpy oatmeal and call it "noise reduction"...but I'll feel 2 minutes of shame when /u/spastrophoto calls me out on it. ;)

Having said that, I think the article linked above and this comparison probably did more for my "understanding" of PI's NR tools than any others I've read....for whatever that's worth. :)

&gt; Glad to see a fellow hockey player on here...not many astrophotographer/hockey player hybrids out there!

Thought the username looked vaguely familiar. :) It IS an interesting combination, ain't it?

That's one more added to the list now... /u/themongoose85 is a hockey player too.

u/dazzawazza · 2 pointsr/gamedev

using:

  • Objective-C FAQ
  • Apple Dev

    I found moving from c++ to objective-c pretty easy. Objective-C seems weird at first but it's very mature and well thought out. The biggest problem I had was objective-c's memory model so pay special attention to that.

    Certainly going through the cocos-2d tutorials is going to get you a long way.

    Oh yeah, I also read Programming Objective-C on the toilet which really helped for big picture kind of stuff. Getting used to the NSString, NSArray classes takes some time but is well worth doing.

    Good luck.
u/jmenter · 2 pointsr/Homebrewing

Thanks!

I didn't have a background in programming per se (I dabbled on and off since I was a kid), but I was well versed in technology of all stripes.

That said, here are the things that helped a lot:

  1. Programming In Objective-C by Stephen Kochan. It's a great book that deals with the language directly without getting bogged down in Xcode/UI specific things.

    http://www.amazon.com/Programming-Objective-C-Stephen-Kochan/dp/0672325861

  2. Stanford University's iOS Development Course. It's free to watch and helps immensely.

    http://www.stanford.edu/class/cs193p/cgi-bin/drupal/

    The biggest stumbling block (for me at least) was dealing with the developer tools. Xcode can be SUPER aggravating (both in terms of bugs and in "how do I do this thing that I know I want to do?"). For me at least, there are things that were super hard to fully understand (the difference between creating a UI object in Interface Builder vs. programmatically, delegates, object lifecycle, outlets and actions, understanding Instruments, etc.)

    Now that I have a few apps under my belt I can see the rhyme and reason to Apple's design patterns but when I was starting out it made no sense whatsoever.

    Good luck!
u/phn1x · 2 pointsr/netsec

You will find malware to be written in plenty of languages including Visual Basic, c++, C, etc. For C I highly recommend the Ansi C book, It's short, clear and comes with code examples and exercises at the end of each chapter.

Reversing c++ is similar, but there are many nuances to it depending on the compiler used. For c++, and at your level I would recommend the Dietel and Dietel book
http://www.amazon.com/How-Program-6th-Paul-Deitel/dp/0136152503/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1267536050&amp;amp;sr=8-2-spell

In terms of assembly, I recommend a few books:
First:
http://www.amazon.com/Assembly-Language-Intel-Based-Computers-Textbook/dp/000501395X/ref=sr_1_5?ie=UTF8&amp;amp;s=books&amp;amp;qid=1267536245&amp;amp;sr=1-5
Second:
http://www.amazon.com/Professional-Assembly-Language-Programmer/dp/0764579010/ref=sr_1_3?ie=UTF8&amp;amp;s=books&amp;amp;qid=1267536245&amp;amp;sr=1-3
and Third:
http://www.intel.com/products/processor/manuals/

Good luck.

u/jugglingbalance · 2 pointsr/Showerthoughts


If you are completely new to programming, don't worry, it's definitely not as hard as people believe it is.

The first important thing when you are learning any programming language is to be goal oriented, because this is what is going to keep you engaged and make you more likely to actually gain something from anything you read.

Think of the most tedious and repetitive task that can save you some time - that is going to be your best place to start. For instance, some formatting always has to be updated and it's time consuming, or you need to create a letter from information on a speadsheet every day etc. That's where you'll see your work pay off immediately, and that rush of having it work for you every day will really inspire you to keep going. For me, it was taking a bunch of files and porting the information to one place initially.

Once you know what your end goal is and what you want it to do, google it in every variation you can find. YouTube tutorials are actually where I started, just to see if what I was thinking of was possible. They have a lot of great resources for how to do certain things and you can find out if the concept is achievable this way really easily. Try to "steal" code or try examples that you find. (Just put a url in a comment or some indicator of where you found it from because you will forget later, and having the page it came from can significantly help when you are troubleshooting. This is attribution etiquette for programming, anyway.) Don't get discouraged if the code doesn’t work the way you imagined, this is going to allow you to see why it behaved the way it did later on and is a really important step to learning how things worked. Besides, with anything you do, you will likely have to mold it so much to your project, it will end up being more your work than anyone else's in the end either way.

[Wise Owl Tutorials] (https://www.youtube.com/watch?v=KHO5NIcZAc4&amp;amp;list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5) are some of the most thorough and logically laid out tutorials I have seen for VBA and I heartily recommend this if you learn better through video - he's pretty much made a full course of it.

Then, I would say dive in and find out how the language itself works for a little bit. Read about variables, if statements (and variations of these), and loops.

Variables are the placeholders for your data, and using the right ones in VBA means that you can make your program run faster or slower, so it definitely helps to get an understanding of these and what they do early.

If statements and operators and their variations are the parameters that determine what happens. (If dog does not = fed, then feed dog.) These are the logic that everything runs on. You would be surprised how much coding comes down to statements like the dog example.

Loops are how your program is able to do a few things to a large data set in very little time in a structured way. (For each dog, if dog is not fed, then feed dog, then move onto the next dog.) These are also ubiquitous in all programming languages, but the syntax varies between language. This is how those if statements become really powerful.

If you are like me, and learn well from books, these two have been the best ones I've found:

[Excel 2016 Power Programming with VBA (Mr. Spreadsheet's Bookshelf)] (https://www.amazon.com/Excel-Power-Programming-Spreadsheets-Bookshelf/dp/1119067723/ref=sr_1_1?ie=UTF8&amp;amp;qid=1539050489&amp;amp;sr=8-1&amp;amp;keywords=john+walkenbach+excel+2016+vba)
This book is great for learning from the very beginning, especially if you don't have any previous programming knowledge. It will walk you through everything in a very easy to read way and get you dreaming about the possibilities with VBA. It also shows you why you may end up wanting to get detailed in the ways you think about variables etc with timed examples. I used the 2013 edition of this book and I was very pleased. This is a great choice as your first book covering the basics.

Mastering VBA for Microsoft Office 2016:
This book is the one I used the most out of all of the books that I bought on the subject. It has some really excellent examples of things you may not have even imagined could be done in VBA that give the language a lot of power and usefulness. I still refer to it, even though I outgrew all of my other books. It spells out a lot of the basics as well, and if I had to refer to VBA on a desert island, this would be the only book I would bring. (Although the idea of having to refer to VBA on a desert island is a special kind of nightmare, even for someone like me who loves it.)

If you can only afford one of these, definitely get this one - the first one is great for baby steps but becomes outgrown quickly. I recommend it mostly because it does an excellent job of explaining programming if you have never done it before.

The Spreadsheet Guru has some really basic things ranging to some more advanced concepts and is not a bad place to start learning some quick fixes.

Excel Macro Mastery is great for getting to know how the moving parts work, especially with some of the complex data types that it can be a little hard to wrap your head around as a newcomer. This site has some times when it will try to sell you on his program, but it's worth a little annoyance for the truly good advice:

Excel Virtuoso is excellent for advanced program structures and how to make VBA act more like an object oriented programming language. It may be good for some of the earlier stuff, but this is when I found ways to do things that most people don't seem to know it can, including ways to make custom classes for data do things that are not very well known and only glossed over in most VBA programming books. It's been a godsend for me, and is the cornerstone that a lot of my work actually hinges on as the project I took on was far more complex than the scope of most macros, which are quick and simple maneuvers primarily.

But don't limit yourself to these resources. Look everywhere when you are trying to learn and don't fret overly with whether you are doing something right or wrong. Make it, test it, troubleshoot it, and improve.

The computer will not explode if you do something wrong. VBA is meant to be like a fisher price language because the intent of providing it is more for office workers than full blown programmers. At worst, your program will shut down and you may have to end the task in task manager or reboot your computer. This is rare. Most times, the compiler will remind you that you missed some part of syntax, which is a quick and easy fix that even advanced programmers have to deal with all of the time.

Feel free to look at places like stack overflow, but take all of this advice with a grain of salt, because there are normally at least 20 ways to do something (and that is on the low end) and everyone can get a little protective of their way. I use this as more of a brainstorming effort.

And if you have any questions, feel free to reach out to you. If I haven't dealt with it already, I may be able to point you in the right direction. :)

Also, if you're interested in learning programming in general, this is an awesome list of coding courses and where to find free coding courses that freecodecamp sent out this summer:
https://medium.freecodecamp.org/500-free-online-programming-computer-science-courses-you-can-start-in-august-bc1bcac1af5e

u/mikkysixx · 2 pointsr/italy

Io avevo imparato su questo

u/Angrydroid21 · 2 pointsr/AskProgramming

This might help:

https://www.amazon.co.uk/Excel-Power-Programming-Spreadsheet&amp;#37;E2&amp;#37;80&amp;#37;B2s-Bookshelf/dp/1119067723/ref=sr_1_3?ie=UTF8&amp;qid=1527765923&amp;sr=8-3&amp;keywords=excel+vba

But what you really want to do is copy the data into a fresh book so you can play with it, start by looking into pivot tables:

https://www.excel-easy.com/data-analysis/pivot-tables.html

Pivot tables should solve your problem once understand them. If not then move on to more advance formulas and feature combinations. Before finally tackling VBA (actual ms office programming), use VBA only if literally no provided feature(s) can be used to solve your issue.

Also as an accountant, do your career a favor and make sure that you master excel by practicing in your spare time. Mastering excel at home really helped me break into the fin-tech world, now I am a full time full stack developer. Excel can be used to do almost anything with some creativity. Good luck mate! let us know how you do

u/7buergen · 2 pointsr/IRstudies

Sure, the basics, but for advanced information gathering consider using SPSS. Andy Field gives a good introduction if you're interested.

u/elimeny · 2 pointsr/funny

If you liked that... you'd also love "Discovering Statistics using SPSS" by Andy Field (the second title is "And Sex And Drugs And Rock N' Roll")

http://www.amazon.com/Discovering-Statistics-using-IBM-SPSS/dp/1446249182

u/spring_m · 2 pointsr/datascience

Also check out Applied Predictive Modeling - it's in a way the next book to read after ISLR - it goes a bit more in depth about good practices, plusses and minuses of different models, feature creation/extraction.

u/rprebel · 2 pointsr/lego

Badass Lego guns? I have a modified version of the gun from Forbidden Lego, but that sounds awesome!

Amazon links:

Badass Lego Guns

Forbidden Lego.

u/Petross404 · 1 pointr/C_Programming

IMHO if you can afford the C Programming: A modern Approach (2nd Edition) , then go for it by all means. Read the customers reviews to see why.

u/lol_te_dolio · 1 pointr/TechoBlanco

Por lo menos no es Asm.

Dicen que este esta pro, igual lo adquiero cuando acabe el lcthw.
http://www.amazon.com/Programming-Modern-Approach-2nd-Edition/dp/0393979504/ref=pd_sxp_grid_pt_0_2

u/hugthemachines · 1 pointr/AskProgramming

I checked out a discussion about K&amp;R the other day. Eventhough it is a classic in programming litterature, it seems like it is a good idea to pick an other book for starting to learn C for you.
The recommendation I found was C programming, a modern approach. Here is an example link. https://www.amazon.com/C-Programming-Modern-Approach-2nd/dp/0393979504

u/avinassh · 1 pointr/india

Exact book name is C Programming, A Modern Approach. And get the second edition. (amazon link for reference)

u/gnuvince · 1 pointr/programming

I have to say that I don't know. I know that some people like KNK, but as I haven't read it, I cannot vouch for it.

u/davydog187 · 1 pointr/learnprogramming

we used big java in highschool and my freshman year of college. Its pretty good. Theres a newer edition thats more expensive..but this one should still be fine.

u/baialeph1 · 1 pointr/math

Not sure if this is exactly what you're looking for as it was written by physicists, but this is considered the bible of numerical methods in my field (computational physics): http://www.amazon.com/Numerical-Recipes-3rd-Edition-Scientific/dp/0521880688

u/fatangaboo · 1 pointr/AskEngineers

Yes there is software.

The first thing I would suggest is to try the Microsoft Excel "Solver" . It is actually a wonderful piece of highly polished numerical analysis code, buried inside a stinky, steaming turd called Excel Spreadsheets. You and Google, working together, can find hundreds of tutorials about this, including

(link 1)

(link 2)

(link 3)

(link 4)

If you prefer to code up the algorithm(s) yourself, so you can incorporate them in other bigger software you've got, I suggest purchasing the encyclopaedic textbook NUMERICAL RECIPES. This tour-de-force textbook / reference book has an entire chapter devoted to optimization, including source code for several different algorithms. I recommend Nelder-Mead "amoeba" but other people recommend other code.

u/sneddo_trainer · 1 pointr/chemistry

Personally I make a distinction between scripting and programming that doesn't really exist but highlights the differences I guess. I consider myself to be scripting if I am connecting programs together by manipulating input and output data. There is lots of regular expression pain and trial-and-error involved in this and I have hated it since my first day of research when I had to write a perl script to extract the energies from thousands of gaussian runs. I appreciate it, but I despise it in equal measure. Programming I love, and I consider this to be implementing a solution to a physical problem in a stricter language and trying to optimise the solution. I've done a lot of this in fortran and java (I much prefer java after a steep learning curve from procedural to OOP). I love the initial math and understanding, the planning, the implementing and seeing the results. Debugging is as much of a pain as scripting, but I've found the more code I write the less stupid mistakes I make and I know what to look for given certain error messages. If I could just do scientific programming I would, but sadly that's not realistic. When you get to do it it's great though.

The maths for comp chem is very similar to the maths used by all the physical sciences and engineering. My go to reference is Arfken but there are others out there. The table of contents at least will give you a good idea of appropriate topics. Your university library will definitely have a selection of lower-level books with more detail that you can build from. I find for learning maths it's best to get every book available and decide which one suits you best. It can be very personal and when you find a book by someone who thinks about the concepts similarly to you it is so much easier.
For learning programming, there are usually tutorials online that will suffice. I have used O'Reilly books with good results. I'd recommend that you follow the tutorials as if you need all of the functionality, even when you know you won't. Otherwise you get holes in your knowledge that can be hard to close later on. It is good supplementary exercise to find a method in a comp chem book, then try to implement it (using google when you get stuck). My favourite algorithms book is Numerical Recipes - there are older fortran versions out there too. It contains a huge amount of detailed practical information and is geared directly at computational science. It has good explanations of math concepts too.

For the actual chemistry, I learned a lot from Jensen's book and Leach's book. I have heard good things about this one too, but I think it's more advanced. For Quantum, there is always Szabo &amp; Ostlund which has code you can refer to, as well as Levine. I am slightly divorced from the QM side of things so I don't have many other recommendations in that area. For statistical mechanics it starts and ends with McQuarrie for me. I have not had to understand much of it in my career so far though. I can also recommend the Oxford Primers series. They're cheap and make solid introductions/refreshers. I saw in another comment you are interested potentially in enzymology. If so, you could try Warshel's book which has more code and implementation exercises but is as difficult as the man himself.

Jensen comes closest to a detailed, general introduction from the books I've spent time with. Maybe focus on that first. I could go on for pages and pages about how I'd approach learning if I was back at undergrad so feel free to ask if you have any more questions.



Out of curiosity, is it DLPOLY that's irritating you so much?

u/ObnoxiousFactczecher · 1 pointr/Amd
u/meteorfury · 1 pointr/ObjectiveC

This was a great book and goes into a little C as well. You really don't need to learn C in order to program in Objective-C, but I definitely do think it has it's advantages ... here is the book: Programming Objective-C by Stephen Kochan

u/Medicalizawhat · 1 pointr/learnprogramming

I learned objective-c with this book - http://www.amazon.com/Programming-Objective-C-Stephen-Kochan/dp/0672325861

Then to make GUI apps and learn about Cocoa I read through this one -http://www.amazon.com/dp/0321503619/

I found Objective-c frusterating at first but eventually decided it was not so bad. If you know a bit of C then Obj-c isn't that difficult, it's getting to know all the Cocoa classes and stuff that takes time.

Something else I found useful was using the tab completion in Xcode to find things that sounded similar to what I was trying to do and then reading the docs in Xcode.

Maybe try to write a few simple command line programs, then translate some of your other programs to Obj-c, and finally have a crack at building a GUI app.

u/nevare · 1 pointr/programming

If you don't want to do high level assembly and that you want to do in on unix you should try Professional Assembly Language, it's based around gnu tools and it's pretty good. Especially to learn to interface your assembly language with c. After learning that you can use the system call to print stuff to the terminal well you don't really care about reinventing printf, so you can just easily call the c printf function in assembly, which the book does most of the time. And you learn really early how to write a function that can be called from a c program.

u/jbplaya · 1 pointr/learnprogramming

Vivek has some good tutorials, but I don't think they're good for brand new beginners off the street. I recommend Assembly Language Step By Step: Programming With Linux, and after that Professional Assembly Language

u/rookieoftheyeard · 1 pointr/learnprogramming

Hey OP, I'm in a class where about half of it is writing AT&amp;T syntax x86 assembly. This the same syntax output by GCC.

There's very little in the way of AT&amp;T syntax documentation, but there is one good book: http://www.amazon.com/Professional-Assembly-Language-Richard-Blum/dp/0764579010

This book talks about all the linux utilities you need, how to write straight assembly, and how to inline it with your C programs.

AFAIK there are no bugs in gcc assembly compilation. The assembly language generated by gcc compilation of .c files will have a few bugs (they allocate memory in 16byte chunks, except when they don't), but I haven't encountered anything just compiling my .s files and running the executables.

gdb is useless for me when I'm doing assembly work, except to see where the program died but this is useless if you are not 100% sure you are following the calling conventions, because it could be that it dies in the caller but it's your (the callee's) fault. The only other thing it's useful for is dumping registers, but I have a register dump that's very easy to use if you want, you just call it in your code (don't even have to set up parameters) and it does everything for you. Only x86 though. Also have a hexdump program if you want to check what your stack looks like, but to use it you first have to learn how to pass two local ints and a pointer.

EDIT: forgot to say just message me if you want the programs and I will upload the source code

u/maskd · 1 pointr/programming

Professional Assembly Language covers SIMD instructions, although it's from 2005, so it's also a bit outdated.

u/DasWood · 1 pointr/Accounting

VBA is rather archaic and you manipulate excel through poorly documented com methods/objects and it sucks. If you really want to go that route here is a link to try. https://msdn.microsoft.com/en-us/library/ff846392.aspx

VBA is also strictly distinct and not entirely compatible with Visual Basic. If you're entirely sure you want to go this route there are books on the subject. Try the Excel Bible. It has sections in there on VBA. Only 100 or so pages however. Excel 2016 Power Programming with VBA is about 700 pages of VBA

u/workpsy · 1 pointr/IOPsychology

I highly recommend Andy Field's book Discovering Statistics Using IBM SPSS Statistics. He has a gift for simplifying complex statistical concepts. Additionally, you'll be learning to use SPSS, which is guaranteed to be useful in your graduate studies and career. Alternatively, he offers the same book for other statistical softwares.

u/coconutcrab · 1 pointr/sociology

I'm late to the game on this one, but learning these programs cannot be stressed enough. Different institutions have different preferences for programs, so you may hear about MATLAB, SPSS, STATA, R, etc etc. Pick one and go for it. My personal suggestion is to begin with SPSS. It's very user friendly and a great kickoff program for getting your feet wet.

Your school may have stats classes where you'll learn SPSS or a program like it, but if you want to go at it on your own for a headstart, I suggest two things: the first, YouTube, FOREVER. There are a ton of helpful videos which take you step by step through the processes of using almost any program you can think of, and the best part is that YouTube is free.

The second is that it's never a bad idea to pick up a great book, a go to reference guide if you need it. Discovering Statistics Using SPSS is written by a great author who (shockingly) does not make the subject matter seem dry. I own the R equivalent and am looking to pick up the SPSS version soon because I liked it so much.

Costs of textbooks/stats reference books are high, I know. But for my preference, nothing beats having that go to reference item on your shelf. If you decide to start shopping around, you can ask around in /r/booksuggestions or /r/asksocialscience and see what others use to find the best book for you.

u/Niemand262 · 1 pointr/AskStatistics

I'm a graduate student who teaches an undergraduate statistics course, and I'm going to be brutally honest with you.


Because you have expressed a lack of understanding about what standard deviation is, I don't anticipate that you will be able to understand the advice that you receive here. I teach statistics at an undergraduate level. I teach standard deviations during week 1, and I teach ANOVA in the final 2 weeks. So, you are at least a full undergraduate course away from understanding the statistics you will need for this.

Honestly, you're probably in over your head on this and a few days spent on reddit aren't going to give you what you're looking for. Even if you're given the answers here, you'll need the statistical knowledge to understand what the answers actually mean about your data.


You have run an experiment, but the data analysis you want to do requires expertise. It's a LOT more nuanced and complex than you probably realized from the outset.


Some quick issues that I see here at a glance...

Mashing together different variables can make a real mess of the data, so the scores you have might not even be useful if you were to attempt to run an ANOVA (the test you would need to use) on them.

With what you have shown us in the post, we are unable to tell if group b's scores are higher because of the message they received or whether they just happen to be higher due to random chance. Without the complete "unmashed" dataset we won't be able to say which of the "mashed" measurements are driving the effect.


I have worked with honors students that I wouldn't trust with the analysis you need. Because you are doing this for work, you really should consider contacting a professional. You can probably hire a graduate student to do the analysis for a few hundred dollars as a side job.


If you really want to learn how to do it for yourself, I would encourage you to check out Andy Field's text book. He also has a YouTube Channel with lectures, but they aren't enough to teach you everything you need to understand. Chapter 11 is ANOVA, but you'll need to work your way up to it.

u/tobbern · 1 pointr/norge

Google Forms er bra og svarene dine vil bli lagret i et ark som kan lastes inn i SPSS. SPSS kjenner .sav, .csv og excel-varianter. Her er en video hvor Andy Field forklarer deg hvordan du kan gjøre det:

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

Den eneste begrensningen med Google Forms du må bekymre deg for er om du skal ha mer enn 400.000 respondenter og over 256 spørsmål. Dette er begrensningen på datasettet som vil bli laget i Google Spreadsheets. (Disse er ikke noe å undervurdere forresten.)

Fordi Google Forms er et gratis alternativ og jeg har aldri sett det mislyktes på grunn av for mye trafikk så anbefaler jeg det på det sterkeste. Jeg bruker Surveymonkey og Fluidsurveys på jobb og det har kun fordeler om du skal ha mer enn en halv million respondenter i en kort periode (f.eks en uke eller måned). Det koster også penger så jeg anbefaler Google forms.

u/vmsmith · 1 pointr/rstats

I didn't know about MLR until this post. So without having spent any time with it whatsoever, I would only say that one of the nice things about the caret package is that you can also leverage Kuhn and Johnson's book, Applied Predictive Modeling, as well as YouTube videos of Max Kuhn discussing caret.

u/shaggorama · 1 pointr/datascience

You'll probably find this article and its references interesting: https://en.wikipedia.org/wiki/Cross_Industry_Standard_Process_for_Data_Mining

I also strongly recommend this book: http://www.amazon.com/Guerrilla-Analytics-Practical-Approach-Working/dp/0128002182

If you're looking something more technical about actually doing analyses, this is book is very accessible: http://www.amazon.com/Applied-Predictive-Modeling-Max-Kuhn/dp/1461468485

If you use R, this book is really great: http://www.dcc.fc.up.pt/~ltorgo/DataMiningWithR/

u/Sampo · 1 pointr/MachineLearning

Apparently I have to go to the Amazon page to find a table of contents(?)

EDIT: ok they added a TOC.

u/JimmyLegs50 · 1 pointr/lego

There's also a paper airplane launcher in Forbidden Lego that works really well with a few modifications.

u/jabancroft · 1 pointr/guns

Want to build real, functional LEGO guns? Check out these two books:

  • Badass LEGO Guns
  • Forbidden LEGO

    I've got both books, but I haven't actually built any of the guns yet (assembling the parts needed is a challenge, and I haven't gotten the gumption up to hit bricklink.com to pick them out and order them.

    Still, very cool to check out. Some day, I'll build them.
u/lacylola · 1 pointr/promos

&gt;Customers Who Bought This Item Also Bought Forbidden Lego: Build the Models Your Parents Warned You Against!


I so want this book!!!

u/Uncle_J · 1 pointr/AskReddit

When he has enough components, you can buy him more intruction books. http://www.amazon.com/Forbidden-LEGO-Models-Parents-Against/dp/1593271379/ref=bxgy_cc_b_img_b

u/munificent · 1 pointr/AskProgramming

"The C Language", generally referred to as "K &amp; R" after the authors, is pretty old but still a wonderful book. (C is pretty old too, after all.)

You'll eventually want to supplement it with some newer material but it's such a well-written book that it's great to start with.

u/Sir_not_sir · 1 pointr/compsci

Mainly because C has no memory management by itself. The programmer is responsible to declaring and releasing memory. On top of that is the extensive use of pointers to pass data and functions around. Not having objects is just another mark against it.

C is good for a lot of things, but not everything. There are almost as many ways to shoot yourself in the foot as there are in perl.

The C Programming Book by the creators of the language should definately be on your reading list.

https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628

u/Jither · 1 pointr/MrRobot

Yeah - I'm probably the odd one out, having almost no programming- or technology-related books left on my shelf - other than a couple of the classics that don't get outdated. I do still have this one and this one, although those are only for nostalgic reasons.

The set dresser comment was before I saw what else was on the shelf - I don't find it all that unlikely a collection now - although I'm still hard pressed to find a reason that Elliot would need e.g. a "missing manual" for OSX Mavericks in 2013. Or a relatively recent (from the typeface and colors, probably at least mid-00's) edition of PCs for Dummies. :-) But like someone said, maybe that was a gift.

u/fred11212 · 1 pointr/learnprogramming

Data Structures &amp; Algorithms Bible

C Programming Language Bible

Can’t go wrong with either of these books.

u/PrincessWinterX · 1 pointr/AskProgramming

I quite like the book written by the developers of the language themselves. The C programming language.

u/yetanotherwoo · 1 pointr/learnprogramming

The C Programming Language is short and concise with examples and exercises http://www.amazon.com/The-Programming-Language-2nd-Edition/dp/0131103628/ref=sr_1_1?ie=UTF8&amp;amp;qid=1404934158&amp;amp;sr=8-1&amp;amp;keywords=C+programming+language

XCode has been free for a while in the Itunes store.
https://discussions.apple.com/thread/2563835?start=0&amp;amp;tstart=0

If you have any aptitude at all for programming, you should be able to finish that book in the summer before your class and understand the fundamentals of C. If you cannot do this, you ought to reconsider your career path.

u/almonn · 1 pointr/learnprogramming

I would recommend reading (and doing the exercises) from The C Programming Language by K&amp;R. https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628

u/Fsmv · 1 pointr/math

If you really want to learn to program, and not just have a functional knowledge of implementing some practical things, you should really learn C. C is the basis for practically every modern language and it's comparatively small and easy to learn. The best book on C is K&amp;R C which was written by the language designers. It is very precise, which I believe you'll appreciate coming from a math background.

This book only covers the language itself though. To learn conventions and patterns you need to learn by doing and reading. Find a site with coding challenges or find a project you want to work on and do it. Also read code you come across and try to understand how it works and why the author wrote it that way.

u/BlindTreeFrog · 1 pointr/cprogramming

/u/phao has a good question, and I don't have a great resource offhand, but 2 things...

Java, Python, PHP, Javascript, and (I assume at least) Ruby are all C like, so the syntax will look familiar enough that you could probably fake your way through a lot of it while searching online for details and function syntax. Picking up the K&amp;R book might be enough to get you hacking away at work without much trouble.

In fact, you'll probably feel like you are picking things up really quickly (as far as C/C++ goes at least) and wonder why you were so worried in hindsight. There is one huge catch though and it cannot be emphasized how huge this catch is.

Java, Python, JS, PHP, and Ruby (I'm assuming on the last three, I haven't dealt with them much) don't have pointers. OK, yeah, Java has pointers all over the place ("references") but they are hidden from you. In C/C++ you can point a variable anywhere in memory that you want and read/write from it and it might just happen to work fine, until it doesn't, and those issues can be a huge pain to find. Plus, C/C++ doesn't have garbage collection so as you allocate memory and shift it around you are responsible to clean it up when you are done with it.

On paper it doesn't sound too bad, but this would be the area I feel like I see new people to the language have the most trouble with, especially coming from Java and scripted languages. Just be sure to pay extra attention in that section in the book.


K&amp;R Book: http://www.amazon.com/dp/0131103628

u/blueshiftlabs · 1 pointr/AskEngineers

If you're a CompE, you're gonna be writing a lot of C. If you haven't read The C Programming Language, by Brian Kernighan and the late Dennis Ritchie, shame on you - it's one of the best, most helpful, and most concise programming books I've ever read. (The design of the book is a lot like the design of C, really.)

Also, if you want a reference for any algorithm you could possibly think of, I can guarantee it's in Knuth's Art of Computer Programming somewhere. CLRS, mentioned by xibernetik below, is another good algorithms book that's more accessible, but less in-depth.

u/Eggbotnik · 1 pointr/learnprogramming

If you really want to learn from the ground up, that is to say low level to high level, I'd recommend starting with Assembly Language Step-By-Step. It will get you introduced to binary computation, binary math, and x86 assembly. From there, I'd say move on to The C Programming Language, AKA K&amp;R.

After that, if you've stuck with it and still enjoy it; the coding world is your oyster. Build something brilliant and reap the satisfaction of building your own programs.

Good luck!

u/6553321 · 1 pointr/programming

&gt; The next question would be what are some key concepts I should learn before I start programming?

How to write instruction manuals for retards. I don't know actually. I've taught programming (friends and TAing) but I don't know how to teach someone to be a programmer. It takes a certain attitude. You have a problem and there are certain small steps you are allowed to perform. Programming requires you to translate your problem in a sequence of small steps. There are some people who have a knack for it and they will catch it immediately. Others will look at problem, know the steps but blank out completely and never be able to make the connection of what steps they can perform to solve the problem using the small steps. I would recommend go slow and up the difficulty enough to keep you interested but not so much as to discourage you. I don't know how hard you it will be for you but I think the attitude in proving a theorem in mathematics is what would help. It sort of has the attention to tiny detail, creativity and dealing with the frustration of not seeing the solution immediately that programming requires. I think the easiest way to learning how to program would be trying.

&gt; What do I need to install in my computer in order to practice?

I meant to answer this question in my first post. For C on Windows your options also include installing cygwin and then pretending you're on Linux. For Java, Eclipse. Itself written in Java, so cross platform. Perl, Python should be again avilable on all Platforms on the commandline, all it needs is a text editor (haven't seen any Perl IDEs). Oh in C if you're using good old gcc you should also choose a text editor. A good IDE with a not intimidating example project should be decent, but you'll probably become confident a lot quicker if you were using a simple text editor with just your compiler and interpreter.

&gt; Is there a great difference in programming command line programs and GUI programs? What do I need to know to do GUI programs? Do I need special software / libraries / skills?

To be honest I have barely done any GUI programming. I have modified a couple of GUI programs and have done some 3D stuff in OpenGL. My answer is GUI programming is just annoying not interesting. Most of the real work does not involve how you interact with the user. GUI programming is mostly calling a bunch of library functions with some voodoo magic. Of course no matter how technically awesome your program is it's not impressive to a non-programmer until they see a GUI.

&gt; Could you recommend a good book for self-reference?

For Perl the camel book (larry Wall is author of Perl) will serve you your entire life. For C K&amp;R is by the auhtors of the language and considered the definitive learn C book (haven't used though). As far as C++ don't learn that as first language but I know there is a book by Stroussup and Deitel and Deitel is used in almost all universities. I found Thinking in C++ to be useful (used in my school alongside Deitel and Deitel) but please please don't learn C++ first. I plan on reading ANSI common LISP by Paul Graham one of these days.

But seriously a book won't get you very far. The quickest way of learning programming is doing it. Once you're confident programming you'll find all languages making sense and starting to edit a program in a language is a great way to learn. You have code examples right in front of you and the fact that it already runs and does most of the stuff boosts your confidence until you get comfortable enough with the language that you can see yourself do the whole thing.

&gt; I tried teaching myself Python a while back, but then they upgraded Python to 3.0 and I couldn't do anything anymore and I was very confused as to why. It since has become clear to me that knowing a couple of codes in a particular programming language is not the same as "programming". So, I would like to know more. Could you please help?

That's why I said start with C. It's a very concise language that does exactly what you say. And there is slmost nothing to remember for it. It should help you develop the programmer mentality. The other school of thought though is that a learner computer language is something that helps you express algorithms which makes C the worst choice because it is too lcose to what you want to tell the computer rather than the ideas you havem but I'm from the bottom up rather than top-down school of thought.

u/ThreeHolePunch · 1 pointr/programming

That is exactly what I came here to say. Learning C before going to college made all of my CS classes easier (especially when I had to learn a new language).

When I learned C I picked up K&amp;R and The C/C++ Programmer's Bible. My only programming experience before that was BASIC (which I don't recommend as a starter language for reasons outlined here).

u/rheimbuch · 1 pointr/learnprogramming

Since you'll be learning Ruby anyways, it might be fun to build a little web app using Sinatra. Sinatra is simple, lightweight, and a great example Ruby's syntactic flexibility vs Java. And JRuby actually runs on the JVM and gives you access to all the Java libraries. Also on the JVM is Clojure which would give you exposure to a Lisp, functional programming, and cool concurrency tools.

Off the JVM, learn C and Javascript: C so you understand the bits under the hood; Javascript because (even if you don't do web dev) it's kind of cool that a prototype-based language is running everywhere.

u/metawhimsy · 1 pointr/UCSC

Personally, if you really want to dive in, I really recommend C. You'll have to learn about pointers and memory management which Perl and Java won't force you to learn. Java will be easy to learn and will make a lot of sense if you're familiar with C.

K&amp;R's C book is the most acclaimed introduction to the language. http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

u/dirac_eq · 1 pointr/programming

If you want to learn C, the only way is to read the bible.

u/thehorrorfrog · 1 pointr/learnprogramming

C Programming Language would certainly cover all of that. I don't know what your background is, but C is typically considered a lower level language than languages like Java or Python. Learning to program in C will give you a better understanding of what your hardware and OS are actually doing throughout the execution of your programs. That said, it's a little bit more challenging to get started in.

u/goodguygreenpepper · 1 pointr/learnprogramming

This book is probably the best resource for learning c. You might be able to find a pdf version online too.

u/dryourmom · 1 pointr/UTAustin

This book is quite good and gives an indepth look into C. The price is pretty steep but I imangine that you could find a PDF somewhere online.

u/nooshaw · 1 pointr/arduino

The bible of C/C++ books, ANSI C by K&amp;R.

https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628

This is the book most programming courses use in Computer Science as it was written by the Bell Labs developers of the 'C' language, Brain Kernaghan and Dennis Ritchie.

Read each chapter like a fine wine then complete all of the exercises at the end of each chapter. My bet is you can find a forum somewhere to post your homework for others to evaluate, troubleshoot, or offer suggestions like the stack overflow site.

http://stackoverflow.com/questions/26645484/kr-the-c-programming-language-exercise-2-2-check-my-work

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/shadow_of_octavian · 1 pointr/CasualConversation

Well ultimately the best advice I can give you is it isn't about the language you learn but the concepts you pick up the span across all languages. While you are learning C you are also learning the fundamentals of computer science. For C well C is a low language so it makes you handle memory management and makes you jump right into pointers. I have another source if you want it, the book "The C Programming Language" is what we use for my class, the book is cheap and was written by the guy who wrote C.

u/lingual_panda · 1 pointr/cscareerquestions

Thank you! I'm actually realizing that I learn more from my textbook than I do from the lectures for my intro class, so after my midterm tomorrow I think I'm going to focus on reading ahead for the next couple weeks and spending the second half of summer getting a handle on data structures and algorithms.

Aaand I just looked it up, the data structures course just has a C reference book and the algorithms course doesn't have a required textbook. I'll have to look into which textbooks are commonly used for those classes elsewhere.

I'm also planning to read MIT's Structure and Interpretation of Computer Programs at some point, cause I heard it was a really good intro book. Should I try to get through that first and then hit up data structures and algorithms?

u/asdf-user · 1 pointr/mac

Hm, probably not. Obj-C is used for developing iOS/OS X Apps. But I have no clue what to use in Engineering, maybe C or C++

Infos about Alfred here. It's basically a better Spotlight Search, to find/launch Apps, find files, quick google search, calculator, etc

About Objective-C: Take a look at the Big Nerd Ranch Guide

For Java: Head First

C: The C Programming Language

EDIT: iTerm2: Terminal replacement, I use it mainly for the hotkey window
and Cheatsheet: Hold command to get a list of all shortcuts for the active App

u/Freak-Power · 1 pointr/geek

I'd recommend Tanenbaum's Modern Operating Systems, that should get you started on beginning to understand what goes on inside your computer. If you'd like further reading and you want a mental beat-down, you can't go wrong with Knuth's The Art of Computer Programming. Want to start with programming? One of my favorites is The C Programming Language by K&amp;R. Those three recommendations, while they add up to a single semester's tuition, are worth way more than that. Good luck!

u/muhnooer · 1 pointr/java

Find a copy of this:

http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=sr_1_3?ie=UTF8&amp;amp;qid=1300812062&amp;amp;sr=8-3

If you really want to learn all of (most of) the "Why" crap up front. I got a copy at a used bookstore for $4.

However, you don't worry about learning WHY it goes there, just learn to realize WHEN it needs to go there. It has to do with statement termination, so the compiler can properly convert your code to machine code.

I came at programming with your same mindset "why" but I realized that the answer is usually "doesn't matter to me" so then I started focusing on "when" and I realized that the "why" question eventually answered itself down the line at a time when I was better able to grasp it anyways.

u/sysop073 · 1 pointr/programming

I see K&amp;R, so I'm hoping it changed in the last two days or I'm going to be very disappointed with this post

u/java568 · 1 pointr/OMSCS

I learned C in college with this book, but I highly doubt it's the best way to learn the language: https://www.amazon.com/dp/0131103628
I haven't used C since college, so hopefully someone else like /u/tphb3 can chime in with a better answer for you.
Edit: Just realized he said "Read K&amp;R" (which is the book I linked to).

Needing an understanding of things such as computer networks will again come down to your course selection. How solid is your math?

u/HueronEnter · 1 pointr/askgaybros

I'm seeing a very common pattern in the thread here. Any software engineer/programmer that's worth its... awkward complexity is measured in their skill.

That said skill isn't the in-depth knowledge of a language, where you can codegolf the mona lisa in various opengl implementations in cutting edge obfuscated machine opcode and mnemonics, but rather:

  • Algorithmisation: Knowing how to write and optimize algorithms.

  • Comprehensive understanding of the fundamentals

  • Abstracts, and its related concepts

  • Knowing, recognizing patterns

  • Applying Design Patterns that work

  • Knowing Data structures, and what works where

    A good programmer might be able to code a small software or a small webpage in a constricted time period for a small vendor.

    A great programmer only has to look at a language for a day to start programming.

    A week is enough to be fluent. Two weeks are sufficient to write vendor code.

    CompSci is not some magic bullshit, but some cannot stomach it.
    You should absolutely look into the "academics":

  • SOLID for programming

  • ACID for databases

  • the timings, O(n), O(1), O(n^2), such.

  • Math abstracts

  • Optimization

  • Invariants

  • Automata theory

  • Software development methodologies


    Then also look into:

  • AGILE. - http://agilemanifesto.org/

  • Test-Driven development (Test-First)

  • Behavior-Driven development

  • Unit testing

  • Integration testing

  • Testing in general

    Mind you, not as hard as a college or university might teach it - that's their business. You should do the reading, understand, and apply it in practice.

    Code in :

  • C to see how far we've gone.

  • C++ to learn a language that's future-proof and won't go anywhere.

  • Python to see a fruity and tasty environment that does a lot of things.

  • Bash/shell/variants to know more concepts

  • Lisp : Actually don't bother with LISP, it's pure cancer with the functional lists it does. But do take a look, maybe write a few lines of code.

    I would be a bad programmer if I didn't recommend:

  • Clean code by Robert C. Martin: http://www.goodreads.com/book/show/3735293-clean-code

  • JavaScript: The Good Parts by Douglas Crockford: http://bdcampbell.net/javascript/book/javascript_the_good_parts.pdf

  • C programming language by Kernighan and Ritchie: https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628


    One very interesting and important point:
    To get good jobs, you have to know some technologies. Don't just brush languages. Stack overflow is your friend.

    And for the wisest words that many seem to forget:
    Keep it simple, do more with less. Avoid all and any side-effects.

    Edit: Damn reddit and its formatting...

    Edit 2: End-goal of it all: Swimming in all the cash, baby!
u/Vetches1 · 1 pointr/cscareerquestions

&gt; I know, right? All I ask in return is that he does some simple chores around the house for me. I charge other people a fair amount of money for my tutoring services! I taught him C in ~2 weeks when he was on winter break. 24/7 of syntax, function stack frames, pointers, pointers, and did I mention pointers? After that I set him loose on the UNIX assignments, giving a brief overview of how each assignment should be done or whenever I need to fill in the knowledge gaps.

He's quite the lucky one, haha!

In regards to his learning of C, I assume you taught him out of the knowledge you had? For someone like me, I assume I'll have to go through a book, which might take a bit of time before I can really delve into Unix. I've heard K&amp;R is a good book, but I'm still trying to figure things out.

What level of C should I have before I do get into the assignment?

&gt; Regexcrossword is pretty easy. Try it out - just start at Tutorial (and read the title - the puzzles are fairly self-explanatory in the tutorial phase). I can't even do some of the brainteaser non-sense. If you can get to Advanced you basically learned almost all the useful parts of regex.

Duly noted, I suppose I just took a small glance at it and got a bit nervous about whether or not I could fully understand it. So does the idea of regex come up more so in the industry than it would in school, or does it have its place in both?

And does Regexcrossword introduce you to real regex? I suppose I'm more the type who likes the "this is what these symbols do, this is what these do, etc."

&gt; Compilers are usually a course that's feared in most CS curriculum as a hard class. I wouldn't know though - I didn't take it (wasn't offered when I was senior enough &amp; signing up for classes, rip).

Why is it feared as a course?

&gt; CTCI was more of a review for me &amp; mostly to get faster at whiteboarding. Most good CS graduates probably can do all the questions on leetcode / CTCI / EPI given enough time, but all the Big N really care about is if you can do it in 40 minutes. Me derping on fibonacci and bubble-sort was just me being under-prepared &amp; stupid. I know a friend who also failed one of his Big N interviews by forgetting fibonacci and getting accepted into another Big N later on. You'd be surprised what the stress of an interview can do to you, especially if you didn't recently do the problem (I was more focused on data structure &amp; bit manipulation questions then, thinking they were more likely to come up - especially since trees &amp; graphs are naturally recursive so it's a two-in-one question).

Are bit manipulation questions common? I don't know the first thing about them, and not sure if I should learn them sooner rather than later.

When you say that it's hard if you didn't recently do the problem, would it be good to review key problems before an interview?

&gt; If I had to summarize: no bullshit. He never made excuses and always had an answer for any questions he might get asked, and expected the same of his team. It wasn't just that he injected some best practices into the team and everything was rainbows. He cleaned up the task backlog, found the pain points, threw out the "fluff tasks," and kept things on schedule. Since the team was mostly new hires / new grads back then, I definitely think I felt content with the way things are and not realize there's always a better way of doing things - we needed the supervision. He does know when to stop as well - what happens at work stays at work. Work-related topics never come up when the team is hanging out OOF.

Damn, that does sound like a good software engineer. I'm curious, if you have any idea, how he could prepare himself to answer any question he got asked. Were you dealing with a specific type of technology that yielded itself to being mastered enough so that it could become something that one knows backwards and forwards?

u/Muhyeah · 1 pointr/Denmark

Hvis du starter på at lære C, kan jeg varmt anbefale denne 25 år gamle bog. Den gemmer på meget godt, og er bestemt værd at læse.

http://www.amazon.com/The-Programming-Language-2nd-Edition/dp/0131103628

u/JonVoitDodgeball · 1 pointr/TheDickShow

highly suggest one of the coursera classes on python

if you want to get into C/C++ this is a requirement: https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=pd_lpo_sbs_14_t_0?_encoding=UTF8&amp;amp;psc=1&amp;amp;refRID=ZHA2EE7MDB4DC754QR63

a used paperback would be fine

u/rasfert · 1 pointr/learnprogramming

I'd also recommend The C Programming Language.

u/euphraties247 · 1 pointr/c_language

You get yourself a copy of the The C Programming Language, and UNIX for the Impatient. Then get yourself a VAX-11/780 with 4.3BSD, and program with K&amp;R PCC using nothing but vi.

u/Truth_Be_Told · 1 pointr/ProgrammerHumor

Please see my edited post.

You are overthinking it. There is nothing called "modern way of doing C". Unlike a lot of modern languages which have been conflated with their libraries/APIs and which keep on growing, C is a small and minimal language and has not changed much through its revisions. So you will be good whichever book you start from and as you build up knowledge you will figure out the nuances and internalize "best practices". It really is that simple.

Here are some books to get you started;

u/futurepat · 1 pointr/learnprogramming

https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

Read and do the problems. You'll understand everything taught in CS courses up to senior year, minus version control.

u/Exaltred · 1 pointr/iastate

Following up on this since it's a common problem for CS majors especially, I would recommend picking up a copy of the K&amp;R used or otherwise and going through at least the first ½ or ⅔ and trying your hand at the exercises.

If you get through the majority of the book you'll be more than prepared for what 327 will throw at you C-wise.

For C++, Sheaffer does a good job of covering the C++ism's that he expects you to use -- he doesn't like C++ either.

u/cbasschan · 1 pointr/Cprog

Indeed, it's good to see I'm not the only one who strongly dislikes this website...


&gt; Strings in C are the collection of characters. Strings are also known as an "Array of Characters".

&amp;#x200B;

That is utter nonsense! Quoting the C standard, you can see why:

C11/7.1.1p1:
&gt; A string is a contiguous sequence of characters terminated by and including the first null character. The term multibyte string is sometimes used instead to emphasize special processing given to multibyte characters contained in the string or to avoid confusion with a wide string. A pointer to a string is a pointer to its initial (lowest addressed) character. The length of a string is the number of bytes preceding the null character and the value of a string is the sequence of the values of the contained characters, in order.

&amp;#x200B;

There are multiple contradictions in the implication your website creates. Let us look at them in order specified above:

&amp;#x200B;

C11/7.1.1p1:
&gt;A string is a contiguous sequence of characters terminated by and including the first null character.

&amp;#x200B;

Where in your definition have you mentioned the terminating null character? Note that this implies a string doesn't necessarily span the entirety of the array and a string doesn't necessarily reside within an array at all.

C11/7.1.1p1:
&gt;A pointer to a string is a pointer to its initial (lowest addressed) character.

&amp;#x200B;

If we interpret your website literally, then a pointer to a string is a pointer to an array of characters. The declaration of a pointer to an array of n characters named unusual_string_pointer looks like this:


char (unusual_string_pointer)[n];

&amp;#x200B;

This is unusual because it's very unlike the argument type accepted by our
standard string functions. In addition to the implications I've mentioned earlier, from this most recent quote from the standard we can tell a string might begin mid-way through an array.

&gt;The length of a string is the number of bytes preceding the null character and the value of a string is the sequence of the values of the contained characters, in order.

It's extremely common for newcomers to categorically confuse the concepts of
strings and arrays, such that they believe strlen(string_in_array) would be sizeof string_in_array - 1. That is not necessarily the case, as this quote shows, yet your website does nothing* to guide beginners past this common hurdle.

Moving on to some other quotes within your page here...

&gt;Strings in C is a one-dimensional array.

It is trivial to construct a string that isn't stored within an array. With the caveat that the only safe string (that I can think of) to do this with is an empty string, and that you'll probably want to use the &amp;amp;address-of operator to do this, I'll leave this to you as an exercise. The key take-home point here is strings are (typically) stored in arrays, but aren't the arrays. You could say that prime numbers are (typically) stored in int, but that's not necessarily always the case.

&gt;Strings in C are ended by the "NULL ('\0') character.
&gt;Strings are written in double quotes ("Programming") while the character is written inside a single quote ('A').

I wonder why you would assume the position of a teacher whilst confusing string literals for strings like this. Tell me, why isn't &quot;Programming&quot; ended by the "NULL ('\0') character in this text? To me it seems like you have two definitions merged into one, and they're contradicting each other.

I would also like to add that one example of a string (using the formal definition from 7.1.1p1 above) can be written using a character literal like so: '\0' (this is a hint for your exercise). A pointer to that string (also complying with the definition) can be written, without a declaration... and the length of that string (see 7.1.1p1 for this definition) can be written... all without declaring a single variable.

C11/footnode 78:
&gt;A string literal need not be a string (see 7.1.1), because a null character may be embedded in it by a \0 escape sequence.

As you can see from footnote 78, an attempt to place a \0 terminating character into a string literal is likely to cause a string literal that isn't a string. Furthermore, if we use string literals as initialisers for arrays that aren't large enough to store the terminating byte, the string literal won't be treated like a string, for example: char fubar[5] = &quot;fubar&quot;; // not a string.

Further common confusions appear in reality with our students, such that newcomers tend to think an array of characters is automatically a string and thus automatically contains a terminating null character... more utter nonsense which your website does nothing to quench... and to be clear on this, I expect more from an educator and was shocked to find you work at a university, teaching programming! This was the point at which I decided to start reporting you for misleading people (and plagiarism). You need to go back to university, as a student, and study C properly (without cheating on your exams).

To be clear on this, if you're going to use the writings of other people (like myself), you need to properly cite those writings. We've been down this road before; I threatened you with DMCA takedown, remember? Frankly, you disgust me. Our educators should know better... to think I am unemployed on a disability pension while you are employed in my dream position. You disgust me!

Even despite earlier making the erroneous statement that Strings are also known as an "Array of Characters", you go on to say...

&gt; In C programming, strings are not used as a data type (like char, float, double, int etc.).

Don't you realise "Array of Characters" is a data type? You have mixed this last small ounce of truth that this page contains in gallons of utter rubbish, as demonstrated by the very next statement you make:

&gt; Strings are declared like an array if you do not know what the arrays are? Then, first, you should read the arrays.

You're a hypocrite. If you don't know what constitutes C, then, prior to assuming the role of an I.T. professors assistant, you should read a book about C (and do the exercises, as you would expect of your students).

I'm not going to bother correcting all of your errors. It'd be less wasteful of my time to simply write my own textbook, and to be clear on that matter, there's nothing wrong with K&amp;R2E. Your website exists without a purpose, and lies to people. What you should do, to be honest to your students and to the founding forefathers of the language, is redirect your entire domain to the Amazon page for K&amp;R2E. Make an affiliate link, if you like, so that you get commissions on the sales... at least this way your students will learn the actual programming language, as opposed to your retarded imagination of it.

u/colonelflounders · 1 pointr/learnpython

Since you already have a decent knowledge of Javascript, this would probably be a good book to start with: Dive Into Python 3.

As for C K&amp;R2. The main issues you are going to have with C are memory management and undefined behavior. Sadly K&amp;R isn't going to teach you much about that, so you will need to look for other resources online dealing with those two things. Also getting help on IRC more than likely will involve a tongue lashing.

My advice for Linux, Git and Vim, just start using them. If you don't have a computer with Linux on it, install it and use it everyday. With your projects use git to keep track of the changes you make. Add a feature? Make a git commit for it. Github has some good learning resources for it and there is also the book Pro Git which goes in depth. For vim start off with vimtutor in the terminal and keep a cheat sheet of shortcuts. After you get semi-comfortable, you may want to read Practical Vim by Drew Neil.

u/euid · 1 pointr/cscareerquestions

Personal hobby, 7 years deep. I haven't taken a single class that has taught me a single point from that post.

I study computer engineering (with a predominantly math/microcontrollers/electrical engineering focus) in school. I founded a LUG on-campus to promote this stuff, since it's severely underrepresented in my institution.

I linked to it already, but read The Linux Programming Interface. A prerequisite might be K&amp;R since the book is C-heavy. Buy those books, pick a distro (Arch Linux is my forte, since it has the best wiki in the Linux world), and get crackin'.

u/Marunchan · 1 pointr/TechoBlanco

yo estoy sufriendo con las tareas. Las sacan de este libro.

No creo que nosotros nos metamos mucho en lo que son las estructuras pero los apuntadores si los necesitamos para configurar un chip.

u/GambitGamer · 1 pointr/cscareerquestions

Seeing as you are working on an Android app, you presumably know Java. C# is really similar. Objective C is for iOS development. I'd recommend C++ or just plain C. This is a good book. Python is also awesome though and pretty straightforward... So C or Python

u/ekollof · 1 pointr/unix
u/PicklesInParadise · 1 pointr/learnprogramming

I haven't read it in years, but I remember The C Programming Language being very useful.

If you want to learn more about the low level details of how computers work in general, I own the following books and recommend them:

---

u/kevin_at_work · 1 pointr/arduino

I've been doing this a long time! You'll get to the point where choosing data types and using loops are very simple for you, just takes practice and thinking about why things work.

In terms of a book, my favorite is K&amp;R's C book. It's an oldie but goodie, and starts with the basics which sets you up for success when you want to get into the more complicated stuff.

C++ books will in general not be focused on robotics or embedded programming, but Arduino/robotics books will often be more focused specific solutions than on programming theory, so it is difficult for me to make a recommendation there. Don't be afraid to google questions or topics as well. For general programming topics, somebody has probably asked your exact question at StackExchange.

No need on the gold, friend. Just helping out people with topics that I'm passionate about.

Edit: The bot that replied me to made me realize that book is kind of pricey. If that's too much, there's nothing in it that you can't learn online!

u/Beignet · 1 pointr/gatech

get yourself a copy of this, and read it cover to cover. This is the C bible as far as you're concerned.

u/GerrardsClaw · 1 pointr/ProgrammerHumor

This is our SO before we invented the Internet

The C Programming Language (2nd Edition)

u/JustForgiven · 1 pointr/greece

Τσελικη &amp; Τσελίκα ?

Πολύ καλό ελληνικό βιβλίο.

Στο προτεινω ανεπιφύλακτα.

Αυτό είναι ένα κλασσικό αγγλικό πάντως
https://www.amazon.co.uk/dp/0131103628/

u/BuxOrbiter · 1 pointr/compsci

There's a ton of instructional videos on Coursera, YouTube, etc. As I learned C++ many years ago, I can't really recommend a specific course. But find one that works for you.

&amp;#x200B;

I strongly recommend you learn the C [not C++] programming language first. It's super simple, and you won't get bogged down by all the bells and whistles which complicate C++. Plus, most of the complicate C++ language features won't be used in a data structures course.

The C Programming Language, K&amp;R

The book is about C, not C++. However, the C programming language is incredibly simple, and you'll learn the core concepts without all complexity of C++. This book is a quick read [185 pages, not including the reference section]. As you're coming from Python you'll need to understand types, memory allocation, pointers, and headers.

The Google C++ Style Guide

Google's C++ style guide is battle tested. It offers than mere style recommendations, but also many lessons in avoiding pitfalls in C++ code.

Effective Modern C++, Scott Meyers

Read this book 5 years ago. Can't recommend it enough. It covers more advanced features and pitfalls. So you can read it after you have a basic grasp.

C++ Reference

Incredibly dense technical reading, but the more you read the easier it becomes.

u/mzieg · 1 pointr/ucf

I took that class at UCF years ago, and honestly it was horribly taught. Hopefully the current batch of instructors are better. Fortunately you can still do pretty well with a copy of K&amp;R and a free GCC compiler (I recommend Cygwin if you're on Windows).

C is not the easiest programming language...far from it. But it's the most fundamental by a wide margin, and worth learning for understanding, even though comparatively few jobs will actually use it for day-to-day development. (Few, not none...hold your flames :-)

u/remembertosmilebot · 1 pointr/ucf

Did you know Amazon will donate a portion of every purchase if you shop by going to smile.amazon.com instead? Over $50,000,000 has been raised for charity - all you need to do is change the URL!

Here are your smile-ified links:

K&amp;R

---

Never forget to smile again | ^^i'm ^^a ^^friendly&amp;nbsp;bot

u/LesZedCB · 1 pointr/arduino

Encapsulation is really a mechanism in Object-Oriented languages, of which c is not a member. C++ is object-oriented and has encapsulation, and C++ can be compiled to run on AVRs because C and C++ both compile to assembly.

OP: read this if you really want to learn about C. It's an incredible language that has stood the test of time. It's absolutely necessary with Arduino/AVR projects.

Edit: linkify

u/Poddster · 1 pointr/c_language

Use this, aka "K&amp;R C". I'm not sure if I can post a direct link, but if you google for "K&amp;R C" you'll find a PDF so you don't have to spend £30 and find out you hate C.

It's a great and classic book, an completely relevant.

Also, if you want to make your own OS, skip C and try doing it in assembly and on a raspberry PI. You'll learn a lot, and learning assembly will help you out when you start to learn C. My programming education started with making an OS on ARM using assembly, so I can't see why yours can't :P

u/njoubert · 1 pointr/compsci

I would suggest that the carlh programming guides is not a bad idea then!

I would heavily suggest learning C well - this is a language that was designed to stay close to the hardware while being portable, and is a very small language. So, buy a copy of the K&amp;R Book, ever C programmer has one.

Then, Patterson's book is a tome for computer engineering. It'll show you assembly, all the way down to NAND gates.

I would suggest you start by watching and working through Berkeley's CS61C course. It's the logically second course in CS, and after a quick overview of C it dives into the machine itself. Website here, videos here. Also, Dan Garcia is an excellent lecturer.

Once you have all the machine details down, you'll probably feel hampered by your actual program wizardry. This is where you start looking into algorithms and data structures. Your go-to guide here is probably Cormen's Introduction to Algorithms since it handles both data structures and algorithms. It's definitely more of a theoretical/CS-ey book, so if this is not what you want, then Head First Java will teach you a new language (and learning more languages is one of the best ways to grow as a programmer!) and also do many data structures. In fact, you can get both those books and have the light side and the serious side of programming books.

At this point you should be well equipped to go off in whatever direction you want with programming. Start contributing to open source projects! Find things that interest you and try to solve problems! Being a part of the programming community will be your biggest aid in both learning programming and starting to make money through it. People pay for programmers that they know can deliver, and success in the open source world means a lot, and you don't need to go to school for it to get to this point!

Lastly, many CS/programming folks hang out on IRC. If you have questions, find the appropriate IRCS channels and go talk to people. Good luck and welcome to programming!

u/thestringpuller · 1 pointr/learnprogramming

C in this modern world has become the standard for one step above assembly language. I was once told by an embedded devices professor, "Generally the next step after developer a completely new microprocessor is to write a C compiler for it."

This language was written by Kernighan and Ritchie way back before I was born, and thus the number 1 way to learn C is to read their book The C Programming Language

Many developers have respect for individuals who know C. It allows you to see into your computer with more depth, as K&amp;R stated simply, "We built this language for writing operating systems".

Learning C# is a good way to get into programming, as is Python, and so many other languages. Just remember your roots. "Can't know where you're going unless you know where you're from." As they say.

u/MillardFillmore · 1 pointr/math

I was a physics major with a deep seated hatred for programming until forced into doing it for my undergrad research. Started in C with Kernighan and Ritchie's C Programming Language (The guys who invented C) http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628 and work from there. Starts from a low enough level where later, when you move onto higher languages like Python or Matlab you'll understand some of the underlying algorithms and work.

u/ChronicElectronic · 1 pointr/CalPoly

This book. Its pretty much the standard C book written by the language's developers. You'll need it later anyway.

u/Thibpyl · 1 pointr/programminghelp

I bought The C Programming Language book in 1999 and have not found a better book for learning C. This may be due to the fact that one of the authors was also the creator of the C language. I highly recommend it.

You can also find a guide to functions at the links below:

u/Aflixion · 1 pointr/learnprogramming

Try The C Programming Language or The C++ Programming Language then. Those should cover the guts of C and C++ that he'll need. The C Programming Language, commonly called K&amp;R due to the authors' names, is probably the best reference guide out there for C. To give you an idea, when I took the class that covered C in my undergrad years, I used my mom's copy of the book from when she was in undergrad. It's still used to this day.

u/tdrusk · 1 pointr/programming

Still a C noob, but I originally started it by studying The C Programming Language. http://www.amazon.com/The-Programming-Language-Brian-Kernighan/dp/0131103628

Is this a bad place to start? I thought since it was well approved of historically it would be a good base. Thoughts?

u/t3h2mas · 1 pointr/learnprogramming

I think your plan is just fine. You may be distracted by the large amounts of choices you find along your way -- this thread is clear proof of that. Stay focused.

If you intend on starting with C I suggest a reading list kinda like this.

  • Code (good to read before you start to code)

  • K &amp; R - The C Programming Language

  • LCTHW - Learn C the Hard Way (free to read from the site.)

    And then begin Java study. The first two may be a bit heavy at times... Work your way through and do your best, but don't except to get everything.

    You could start with Java. There's a fine community and great resources. I say go for the C -&gt; Java route and get a taste of some low level fundamentals.
u/ominoustoad · 1 pointr/gamedev

There is a lot of good stuff already posted, but I'll chime in. Formal education doesn't mean much if you can become a capable programmer on your own. A good interviewer will recognize your ability to produce quality work, period. However, If you are truly serious about becoming a developer you will need to educate yourself and it won't all be fun. If you can buckle down and teach yourself what you would have otherwise learned in college, there is no reason that you'll be less skilled that a college educated programmer. Some employers may view you as less qualified but you can prove them wrong during an interview.

I would suggest a bottom-up approach:

First, learn some of the Comp Sci. nitty gritty. Get familiar with data structures (Heap, Stack), and understand how computers use memory at the most basic level. A lot of this will be painful at first, but it's necessarily to fully grasp what and why we do certain things when programming.

Second, Learn C. The K&amp;R (http://www.amazon.com/C-Programming-Language-2nd-Edition/dp/0131103628) is going to be the best way to to this. The reason C is great to start with is because it runs on nearly all hardware out there, and it will teach you very important concepts, such as pointers, that will mitigate confusion as you move forward. Also, without learning about memory in the previous step, pointers will be difficult to fully grasp.

Third, Learn another language, and another. The funny thing about programmers is that we are essentially linguists. The main difference is that we speak to computers rather than people. With this in mind, it's important to learn multiple languages, rather than attempting to master one. Pick a language that helps you solve the problems you want to solve. Wanna make iOS/OSX apps? Dive into Objective C. Open Source guy? Learn Java. The more you learn, the easier it gets since most languages share similar syntax, keywords, etc. This is why learning C first was a good plan, because lots of other languages borrow heavily from C.

Finally, write code every day. Writing code, compiling it, debugging it, compiling it again, and then watching it run properly is the ONLY way to truly learn. Keep reference books close at hand, and push your comfort level by writing programs that do more and more sophisticated operations. Don't try to memorize everything about a language, and don't get discouraged if you need to re-read sections of a book. It's a fools errand to try and memorize everything about a language, and even decades-long programmers keep reference books on their desks.

u/foreveralone678 · 1 pointr/relationship_advice

I've been going through this one

http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289594838&amp;amp;sr=1-1

I'm not extremely worried about the actual language I'm learning at this point, I've read through a few python books, but I like the fact that C is such a low level language, I figure it'll help out in the long run, especially since most of these languages (C++,Java,C#) are based off C in the first place.

u/rmhawesome · 1 pointr/AskReddit
  1. Buy this book

  2. Wear a plaid shirt and cargo shorts everyday

  3. Put the book on your shelf

  4. ?????

  5. Profit!
u/KeytarVillain · 1 pointr/EngineeringStudents

I learned C through a class, not a website, so unfortunately I don't know of any specific good ones from experience (at UVic, our first programming class is in C. I already knew how to code in other languages, although for about 90% of people there it was their first coding experience). Some quick Googling shows a lot of sites are unfortunately not great for bare beginners (even though some of them try to be).

This one seems okay: http://aelinik.free.fr/c/

There's also this one, but it seems to jump in a little too quickly, so it's maybe a little better-suited to people who already know another language (unless you're good at learning that way): http://www.cprogramming.com/tutorial/c-tutorial.html

But actually, the best tutorial I know of is in a book rather than online: The C Programming Language (Dennis Ritchie, one of the authors, is actually the guy who created C in the first place). Even if you do want to do an online tutorial it could still be a useful resource to have. Yes it's a little expensive (unless you're fine with a pdf copy you "found" somewhere, wink wink nudge nudge), but if you become a serious C programmer then you might want to have a copy anyway - a lot of C programmers will have this book next to them as they code because it's a great reference resource.

u/jeffdn · 1 pointr/cscareerquestions

If you want to learn C, you start with this book. If you want to learn Python, you should start with this e-book.

u/tstepanski · 1 pointr/learnprogramming

The book I used in college.

The C Programming Language https://www.amazon.com/dp/0131103628/ref=cm_sw_r_cp_awd_cVUywbF5RQDKC

u/bruce3434 · 1 pointr/C_Homework
  • need a whitespace between include and &lt;stdio.h&gt;

  • int main(){} // return an int

  • if (condition){} // condition must be enclosed with parenthesis

  • printf() // p is lower case

  • ++sum or sum += 2; which is it?

  • If you have multiple statements inside if/else statements you must have them enclosed within curly-braces

  • optionally return 0.

    I suggest that you start reading The C programming language to have a clear knowledge
u/terminalcoder · 1 pointr/learnprogramming

Harvards CS50 program and learning basic C was the best thing I did when I started, at least in terms of understanding how computing works. It's hard-going, but having a firm foundation in the fundamentals of how computing works makes everything else down the road so much easier.

u/zxobs · 1 pointr/EngineeringStudents

C# is a way less complex language than C. It's more strait forward to debug. Also it's object oriented. If you think you know C you'll be cranking out C# in a few hours. Also C# also requires you to be less anal about memory.

https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628
https://www.amazon.com/21st-Century-Tips-New-School/dp/1449327141

u/LinuxMercedes · 1 pointr/EngineeringStudents

K&amp;R C on Amazon (or there are PDFs everywhere):

http://www.amazon.com/C-Programming-Language-2nd-Edition/dp/0131103628

u/trebor89 · 1 pointr/robotics

Ohio State University's honors engineering intro series uses the Handyboard programmed in Interactive C.

Sample code is largely going to be dependent on the circuits you've actually connected; what your motor configuration is, etc.

You'll probably have more success looking for broader resources on robotics. Interactive C itself is very similar to ANSI C, except that it has some weird libraries most people wouldn't be useful. If you're having trouble with the language itself, pick up a book on C, or programming in general. K&amp;R C can be kind of rough, and there are down-right factual inaccuracies in many editions, but it might give you a jumping off point.

Beyond that, you may want some books on robotics. I don't have any recommendations, but have you tried asking your professors? Ask the grad students TAing your class too! Students often ignore these resources, but you shouldn't trust some random guys on the internet over trained professionals with every interest in your success.

u/tbone80 · 1 pointr/apple

If you want a C book to use as a reference/refresher, the classic C book is The C Programming Language a.k.a K&amp;R.

u/Psyqlone · 1 pointr/programming

Get a used or new copy of the Kernigan and Ritchie book.

u/snarfy · 1 pointr/C_Programming

For books, there is only one place to start: The C Programming Language by Kernighan and Ritchie.


Will knowing C# make learning C easier? Possibly, but it may also make it difficult, like trying to unlearn a bad habit. C is much less forgiving of errors, and it doesn't hide the von neumann architecture underneath like C# does.

u/graeme_b · 1 pointr/LSAT

Sure.

Harvard and MIT are releasing courses for free, with certification.
https://www.edx.org

Standford has created a similar program.
https://www.coursera.org

Udacity also came from Stanford. Sebastian Thrun, head of research at google, has started offering courses for free, with certificates. I took their intro course, and am taking Steve Blank's entrepreneurship course at the moment.
http://www.udacity.com

Codecademy has free coding lessons.
http://www.codecademy.com

Follow + search Hacker News, and you'll find answers on how to get started.
http://news.ycombinator.com

I began by following The C Programming Language, by Kernighan and Ritchie. One of the best tutorials I've ever used (though tough at first). http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

None of this is easy. But it's all easy compared to getting into and graduating from an Ivy League law school.

Meanwhile, Ramit Sethi has excellent tips for how to make money on the side, or to get a raise at your current job (or a better job). http://www.iwillteachyoutoberich.com/home/

The Four Hour Workweek does the same:
http://www.amazon.com/The-4-Hour-Workweek-Anywhere-Expanded/dp/0307465357

Those last two sound super-scammy, but trust me, they're full of really good, actionable advice.

Again, the underlying idea here is that if you're competent enough to get into an Ivy League Law School, it's easy enough to figure out alternative ways to make more money.

u/sir_rideout · 1 pointr/AskEngineers

I use matlab on a daily basis, and something which has saved my bacon more times than I can count is a standard header at the top of each of your script files (i.e., the *.m files). This header will tell you, down the road when you couldn't possibly remember, what your script does, what the input and output variables are, when you did it, the course and (a carryover from when I needed to hand in code for course assignments), my name/student it.

From a more general perspective, if you have no programming experience, a book on C programming ("The C Programming Language" or wikibooks if you're short on cash (I'm sure other people here have their own favourite programming reference books) will give you an introduction to variables, functions, and in general how you break down a multi-step, complicated problem into series of smaller problems which you can code up. I'm biased in favor of C, given that it was my first language, but another language (fortran, for instance) might not be a bad choice, either.

Once you get a handle on this problem-solving approach to coding, learning a new language will come much faster; it becomes less "How do I solve this given problem?" and more "What is the syntax in this given language for a 'for' loop" or "Where do I need to declare variables?".

u/paolot · 1 pointr/learnprogramming

Nice price on the link you posted. On Amazon, a new copy is currently $52.76. Pretty nuts!

u/freeac993431 · 1 pointr/learnprogramming

i would focus on one language at a time. a real world scenario - imagine trying to learn japanese and chinese at the same time if you never studying languages before.... you'd be in a for a world of hurt. can it be done? sure, it's just a lot harder and will take more time.

if you're not sure about C or scheme, try watching the first lectures on mit sicps on youtube. If you like it, continue with scheme. Scheme will make learning javascript a cinch. If you want to develop games, I would go with C.

if you're learning C, you should be reading this book - http://www.amazon.com/The-Programming-Language-2nd-Edition/dp/0131103628. Makre sure to complete ALL the exercises before moving ahead to next section. I use to think exercises were a waste of time but they are extremely important! You can learn the rules of Chess in a day. Does that mean I know how to really play the game? The exercises will train you to apply what you've learned so you can actually create real working programs.

Or you can just start with C++ instead of C.

Then I would read Code Complete 2nd edition and Effective C++.

u/WhackAMoleE · 1 pointr/compsci

Get a copy of K&amp;R, start on page one, work as slowly as you need to, do most of the exercises.

u/LoudPreachification · 1 pointr/learnprogramming

Start with C. Start with this book: https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628


Come back and ask me your next question once you have typed out each of the problem sets in that book.

u/mister_virgin · 1 pointr/learnprogramming

Why? Look in the link

blog

and to learn C, the greatest book is one and only

amazon link

This book will teach you everything about C. and the examples includes some of the functions of standard library so you'll also know how functions of standard library are/can be implemented

u/interblag1 · 1 pointr/OMSCS

I did IOS for my first course (non-CS engineering undergrad, mostly Python and JavaScript programming, limited C). I worked through the bulk of The C Programming Language (https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628) before taking the course and, on that basis, it was manageable. Hard, but manageable. I also learned a tonne and enjoyed it a lot, though the second project nearly killed me.

I think IOS is a great introduction to the program, iff you can get through some C programming beforehand...

u/torhh · 1 pointr/C_Programming

Why? The still sell it at Amazon for a reasonable price. That's where I bought my copy a few years back.

u/dman24752 · 1 pointr/learnprogramming

It really depends on what you want to do, if your focus is more on web development, then javascript is probably a good next choice for you. However...

If you want to get into more low-level engineering, C is a great tool for that. I learned C a long time ago and it was painful most of the way so expect that. One of the books that gets tossed around a lot is K&amp;R C which I haven't used personally, but I've heard a lot of recommendations for.

https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

As far as what you want to get started, I'd say a linux box (or virtual machine), gcc, and a good text editor. My personal favorite is emacs.

u/Asdayasman · 1 pointr/Python

I can't tell you much about R, but C is very sensible to learn at least a little. It's basically what everything comes from nowadays, (hell, Python itself is written in C), and will get you to be very intimate with your computer... But there are a lot of bad ways to learn it. If you start, definitely use this book.

u/disgustipated · 1 pointr/arduino

Do you have any experience with the C programming language? That's where you start. I think the differences between C and Arduino's version of C++ are irrelevant for the beginning programmer.

I was lucky; I learned C back in the 80's from the K&amp;R Bible. It's more reference than tutorial, but a great book to get started with.

Once you have the basics down, then the best way to learn is to take apart some interesting code. Want to know how arrays work? There's dozens of code segments using them, for driving LED matrices, storing sensor inputs, etc.

u/elboberto · 1 pointr/ucf

Do you guys own this book?

http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

A few hours practicing with it will have you up to par with C in no time.

u/nabnob · 1 pointr/AskReddit

The book in the first link in my previous comment (The C Programming Language) is widely regarded as the best introduction to C programming. I would recommend doing the exercises because, well, reading about programming doesn't really help as much as actually programming.

However, I would check if there are courses on C at your school first (not C++) because learning C on your own could be hard.

Once you've learned C - this course at my school follows the second textbook that I linked to, and it's a very thorough introduction to a lot of systems concepts. What I really love about the course website is that it has links to all previous exams (and their solutions) for the past ten years, so you have all the practice problems you could possibly want. The course has 6 labs, and if you're interested in doing them I could send you the starter code.

u/kion_dgl · 1 pointr/C_Programming

I've been thinking about C and its practical implementation after
learning the basics. And to organize the information I tried making
a skill tree as you would find in the game Skyrim or Kerbal Space Program,
where you complete tasks to get points to advance in the skill tree. I hope
the low quality of the image provides enough context that this is not a complete
work and something I'm poking around with, feel free to suggest nodes or resources
for anyone the nodes as the rest of this post will be me trying to provide
some context and resources for each node.

Basic C
It's right there in the sidebar for anyone to get started.
C Programming Language
Pretty much go through this first, generally suggest using a minimal
text editor and the command line to compile programs.

Intermediate C
This has been marked as optional, as a general stepping stone for
using a few more materials to learn or reference before jumping into
any projects. Books like Modern C, practice books, or understanding
pointers could go here. Let me know if you have any suggestions for
books, youtube, websites.

Sockets
Sockets is marked as optional to separate the group. But in general this section
resolves around the concepts of tcp and udb and sending signals between computers.
Example projects for this group are things like making a basic http server
on the http side, or programming with bluez on the bluetooth side. I threw in game server on the end as there are several open source projects that create the back end for games that don't have online services any more. This seems like a good way to get familiar with a specific set of structs and packets, maybe someone can leave some examples if there are anyones that are a good place to get started.

GPIO
General Purpose Input/Output, such as turning an LED light on or off. I haven't gotten into gpio myself very much, and most of the tutorials for it
seem to use python. But this seems like a pretty good use-case for a practical
implementation with C. I could provide some results from a search, but I only want to provide links to tutorials I can vouch for.

GUI (Gtk)
For making user applications with C, GTK seems to be the most common library for
implementing applications with widgets. The best resource for this pdf seems to be
An Introduction to C &amp; GUI Programming, and
there are a few more examples posted in the gtk discorse.

Graphics
This is the node with the most sub-nodes and not the easiest node to organize as
there are a lot of libraries that can be used. For libraries there is GLUT/GLFW/SDL/GTK+/Raylib/EGL. In general GLUT and GLEW seem to have the least features with them being mostly focuses on getting and window and providing OpenGL context. Freeglut provides a decent wiki for getting started, and while the examples are in C++ it's not too bad to translate them back into C. GLFW seems to be the libary that the OpenGL Red Book currently uses.

SDL is a really common and popular library that's been used for a lot of games,
including Open Tyrian. While it's popular, the only strictly C resource I've found for it so far is this blog , which provides a 2D Shoot 'em Up tutorial. Though the most well known tutorials are written by Lazyfoo, and are provided in C++, while these tutorials have probably been ported to other languages I don't know of any C-only examples out there.

The GTK+ library provides the GTKGLArea widget which allows for an OpenGL 3.0 and above context to be created. So it might be a decent choice to work with if you want to create applications that allow for toggles and widgets, along with a 3d view port. A few example applications for GTK can be found here.

For Raylib I haven't tried it, it often gets suggested here and on forums pretty fequently. So maybe someone can provides links, and maybe provide some context of some comparison between Raylib and some of these other libraries. EGL is an option that I've seen pop up here and there, but it looks like it allows you to write directly to the framebuffer for embedded computers without needing to start a desktop. There's a really good series of tutorials that can be found here.

Summary
So this is what I have for resources that I've found so far that fit into the skill tree. I think there are a few more honorable mentions like libpng, or file compression, or POSIX coding and terminal games and applications. And are there any other nodes that you would add to the skill tree?

u/omegazero · 1 pointr/learnprogramming

The C Programming Language. Get it used on Amazon.

u/Drayeth · 1 pointr/UMD
u/Zeliss · 1 pointr/C_Programming

This could probably explain it better than I could:

http://www.cprogramming.com/declare_vs_define.html

I work full time, so I can't afford to answer your questions except on my own schedule, sorry. I highly recommend you read The C Programming Language, it's very approachable for beginners.

u/unshift · 1 pointr/programming

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

u/Zoesan · 1 pointr/gaming

Get the book: intro to c

Seriously. Do it.

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/twicked · 1 pointr/learnprogramming

I suggest that Oracle's tutorials together with this book is good starting point
http://www.amazon.com/Thinking-Java-Edition-Bruce-Eckel/dp/0131872486
Also check out this video tutorials: https://www.youtube.com/playlist?list=PLE7E8B7F4856C9B19

Not the op

u/aboothe726 · 1 pointr/programming

i agree. books and tinkering are the very best way to get introduced to programming.

i read my first programming book the summer between my sophomore and junior years in high school. (i don't recall how old that made me at the time. 16? bah, i'm getting old.) anyway, that book was Herbert Schildt's The Complete Reference: C++. i found it really interesting, but knowing what i know now Python (The Quick Python Book and Learning Python are good) or Java (I learned on Thinking in Java, but Effective Java is supposed to be good, too) are probably better places to start.

hopefully your parents support your desire to learn programming. $30-$50 for a programming book and access to a computer are a small price to pay for starting a child on a hobby that could turn into a good career!

good luck, and keep us posted! :)

u/benlwong · 1 pointr/laravel

First, I would say don't focus too much (at first) on whether you are coding in OO, but whether or not you are building or structuring your application for readability, scalability, and maintainability. Do you have code that repeats in multiple places? Do you have functions that are too long? Learned to detect code smell and refactor them properly. Once you are developing good programming practice, then start learning what OO and design patterns are all about - and how they will help you design your applications even better.

Laravel is a framework built using OO principles and good design patterns. Because it is a framework providing all the scaffolding, you can quickly build good and maintainable applications without a lot of design and forethought. However, when you are creating a new model or a new controller, you are creating a class. For example, when you create a new Laravel controller extending the base Controller class, you are doing OOP. Of course, that doesn't mean you understand what OO is.

PHP was never designed with OO from the ground up. It was an afterthought and honestly not a very good one. It doesn't force you to think and write in OO. For example, a lot of the base functions and methods are not OO. If you want to understand OOP, I suggest you start with a high-level book and then move on to a true OO programming language that forces you to write and think in OO and nothing else. I am not saying you should abandon PHP/Laravel and switch to a new language, but learn OO with a OO programming language. Once you understand OO, then come back to PHP/Laravel and then you can appreciate what the language provides and what it doesn't in terms of OO.

I highly suggest you read this high-level book first. It is a quick read and you can get an older version for like 25 cents in paperback. It does a really good job explaining what OO is to people who aren't even programmers: https://www.amazon.com/Object-Oriented-Technology-Managers-Taylor-1991-11-06-dp-B01F9FU6OK/dp/B01F9FU6OK/ref=mt_mass_market_paperback?_encoding=UTF8&amp;me=&amp;qid=

Then move on to a OO language like Java or C#. Don't use C, C++, Python, Javascript, or Ruby for this because again, they don't force you to write in OO. The latter ones allow you to write non-OO code, so it won't be as effective trying to learn OO with them. I recommend Java because it is built in OO from the ground up. There are tons of resources, tutorials, books, and videos.

I highly recommend this book to learn both OO and Java. It is an oldie but goodie. I even attended one of the author's design camp a while back: https://www.amazon.com/Thinking-Java-4th-Bruce-Eckel/dp/0131872486. I am sure there are other great books and resources but I haven't picked up a Java book in a long while.

Good luck and feel free to reach out if you have more questions,

Ben

u/anatoly314 · 1 pointr/learnjava

I suggest that Oracle's tutorials together with this book is good starting point
http://www.amazon.com/Thinking-Java-Edition-Bruce-Eckel/dp/0131872486
Also check out this video tutorials: https://www.youtube.com/playlist?list=PLE7E8B7F4856C9B19

u/YourTechnician · 1 pointr/learnprogramming

ok so at school we worked with Big Java . Good book for beginners but it doesn't seem as comprehensive. Thinking in Java is the best book in my opinion, it is covers an insane amount of topics, but it is more of a challenge in case you have a short attention span (it tends to be more serious than the others, rendering it more boring in return).
Now in case you want something more playful Head First Java is a fun one, it uses pictures , and jokes and uses day to day examples in order to make things stick better to your brain. In case you find that kind of stuff better, than it is recommended, but it does cover less than both of the predecessors.

For later inquires, you can check out the books on this list

u/h1d3m3 · 1 pointr/java

Thinking in Java is an excellent resource.

u/Gankbanger · 1 pointr/learnprogramming

The short answer:

Try this book

Oracle's Java site is a pretty good resource too.

Now the long answer, you probably do not want to hear:

The amount of time and effort you will invest in your education will probably reflect on the level of professional you will become. Learning a programming language is just a small part of the knowledge you need to acquire to become a good software developer. Just like learning to operate a video camera will not make you a successful filmmaker.

Although school is not the only way to become a programmer, it forces you to visit a vast pool of concepts including design, testing, analysis, algorithms, data structures, memory management, concurrency and many more. This exploratory process forces you to take a peek on many areas of software development that you will likely never visit otherwise; this is an important exercise not only to be successful at this trade, but it will also help you discover new areas of interest.

If time is not on your side, at least try to emulate a college curriculum when doing your online self training. Do not stop at learning the language, dig much deeper.

u/gsg927 · 1 pointr/learnprogramming

I learned Java when it first came out, and I had a good background in C++. Back then, there weren't a lot of tutorials on the web, but there were books, and most of them were oriented to C++ programmers. You might want to look at Thinking in Java.

u/AngeDeFrance · 1 pointr/learnprogramming

Is it this one?

&amp;#x200B;

Thinking in Java by Bruce Eckel on Amazon.

u/khedoros · 1 pointr/gamedev

Different people have different learning styles.

  • Get a book and work through the whole thing (I haven't used it, but Head First Java seems to be popular. Thinking in Java is a few years old, but it covers Java 6, which isn't far off from Java 7).

  • Find text internet tutorials

  • Take a class

  • Find a video tutorial series you like (I really don't care for videos, so you'd have to ask someone else for recommendations)

  • After learning the basics from some source, "jump in". Seriously, start programming, because you'll need a lot of practice. Find a little project that's just a couple steps above what you know. Do some research into how to do what you're trying to learn, extend your knowledge, then start writing.
u/acetv · 1 pointr/learnmath

That's probably enough Calc to get started with it, but you haven't had a proof-oriented course yet so the way the material is approached, the progression, and the style of problems you'll have to solve may be a little foreign to you.

Reviews on Amazon point to this book as a good introduction, but it doesn't get to analytic continuation. You'll need to be familiar with the techniques taught in an analysis course before diving into a deeper book.

u/colemaker360 · 1 pointr/bash

If you're open to learning a little awk, it can handle this in a breeze with a one-liner:

awk '/^\s*$/{next}{arr[$1]++}END{for (a in arr) print a, arr[a]}' test.log

Breaking it down:

  • awk assumes space is the field delimiter. You can pass a different delimiter if you want.
  • /^\\s*$/{next} means if the line is empty, ignore it
  • {arr[$1]++} means make an array that holds your counts. `$1` means the first field
  • If you have a header line that you don't want to count, change it to NR&amp;gt;1{arr[$1]++}
  • END{for (a in arr) print a, arr[a]} means at the end of processing, loop through the array you made and print the results

    awk is super powerful, and a lost art. This book is a great read if you can pick up a used one.
u/TheAntiRudin · 1 pointr/linux

This is still the definitive work on the subject.

u/yorugua · 1 pointr/linux

if you are going to be programming awk, you need to get the book on it from A, W and K. Once you get a grasp of how AWK processes files, I think you'll go clear from there.

One Book

u/metamatic · 1 pointr/javascript

MIT used to, not sure if they still do.

Scheme is a surprisingly good choice for CS101 precisely because it doesn't distract with lots of syntax or details of internal workings of the computer.

u/g1i1ch · 1 pointr/explainlikeimfive

I'm going to go against the grain here with my recommendation. I'm a guy who was in a similar position years ago. I've since transitioned from web development to game programming and have working knowledge of 7+ languages.

Dude, don't sweat these feelings you're having. You're just at a wall. We all reach different kinds of walls in this career and they're really the best thing ever. It means you're about to jump ahead in skill by at least 10x. You just got to find the trigger for it. Be patient and try different things. Go check out Udacity and do some courses on there. Also this is the time to start reading books. Not just any cheap book you find. Good books that will give you the perspective of an industry professional. Books like JavaScript: The Good Parts, Code Complete, The Pragmatic Programmer, or The Little Schemer. Also it doesn't matter what language the books are in to enjoy it. 98% of all programming languages are the same anyways, which you'll soon learn. For the most part, they just have moderately different ways and syntax to do the same thing.

I would recommend not switching platforms from the web. One of the most important skills guys like us can have is seeing where technology is heading and betting on the right horse. It's very clear that webapps are going to be even more important in the future. You can already make desktop apps with web technology naively in pretty much all major OSs now.

I say learn JavaScript front and back. Read JavaScript: The Good Parts and JavaScript: The Definitive Guide cover to cover. Once you learn JavaScript it'll be very easy to transition to any C-based language, which is most of them. In fact I credit JavasScript for giving me the basics to jump to just about any language comfortably and pick it up in a few weeks.

After that, learn a good server side language like Java, Python, or C#. (C# is in very high demand, and has many applications) Or learn all three and you'll be very well positioned career wise. Well, make sure to get some experience with SQL too for good measure.

Also if you want to have a good challenge instead of being bored on those easy things, like drawing shapes, why don't you try Udacity's fine WebGL course? Jumping in the deep end isn't bad as long as you don't expect it to be easy.

u/ewhouse · 1 pointr/MyLittleSupportGroup

If you are new to programming I can't recommend python enough. I was able to pick up the language in a couple of weeks in high school and now I use it every day at work.

If you are feeling a little more adventurous get the book The Little Schemer. The book kickstarted my love of computer science.

u/g9yuayon · 1 pointr/aiclass

Yes, it is, and is listed here: https://www.ai-class.com/resources. Besides, Sebastian's style is similar to The Little Schemer(http://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992): The author presented you with numerous examples, and you'll see the key concepts emerge.

u/muddo · 1 pointr/learnprogramming

right on, for lisp or scheme I recommend the little lisper or the little schemer

u/organic · 1 pointr/IWantToLearn

Some great books for learning Scheme are The Little Schemer and The Seasoned Schemer by Daniel P. Friedman.

u/johnmastro · 1 pointr/emacs

I agree with the recommendations for SICP - it's great.

In addition to the MIT videos, there are videos from Brian Harvey's SICP class at UC Berkeley. They're available both on YouTube and in iTunes.

However, I'll admit that I found SICP a bit overwhelming at first. For context, I'd been programming (primarily Python) for a couple years, but it was my first exposure to Lisp. I ended up taking a brief break from it to work my way through The Little Schemer and The Seasoned Schemer. It only took a week or two and at the end I was much more comfortable diving into SICP.

Not everyone likes the Schemer books - they're quite distinctive - but I loved them. I found them particularly helpful in really groking recursion and continuations.

u/asthasr · 1 pointr/learnprogramming

This is the example that helped me understand recursion.

def sumlist(xs=[]):
if xs == []:
return 0
else:
return xs[0] + sumlist(xs[1:])

This is a recursive summation function. There are better ways to do it, but this is the most readable. Basically, it will return 0 if the list is empty; otherwise, it adds the current headof the list xs[0] to the value returned by the application of the function to the tail of the list xs[1:].

x = sumlist([1, 2, 3]) # 0 - Initial call.
xs == []? nope # 1 - Check terminal condition.
1 + sumlist([2, 3]) # 1 - Add current head (1) to value of next call.
xs == []? nope # 2 - Check terminal condition.
2 + sumlist([3]) # 2 - Add current head (2) to value of next call.
xs == []? nope # 3 - Check terminal condition.
3 + sumlist([]) # 3 - Add current head (3) to value of next call.
xs == []? yes # 4 - Check terminal condition.
0 # 4 - Return 0.
3 + 0 # 3 - Higher frame: add 3 to 0.
3 # 3 - Return 3.
2 + 3 # 2 - Higher frame: add 2 to 3.
5 # 2 - Return 5.
1 + 5 # 1 - Higher frame: add 1 to 5.
6 # 1 - Return 6.
x = 6 # 0 - Assign the result of the recursion to x.

If you're interested in this, the book The Little Schemer is pretty good.

u/mac · 1 pointr/lisp

I would recommend "The Little Schemer".

u/quantumproductions_ · 1 pointr/learnprogramming

Hello, this book will make you smarter, I promise

https://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992

Source: I program professionally for almost a decade now

u/smurfyfrostsmurf · 1 pointr/arduino

This is really interesting. I just finished The Little Schemer recently, and I'm also new to Arduino, would be great if I fuck around with both.

Newbie question. Does this compile the Lisp program into machine code? I don't think I understand the way compiling works in Arduino.

u/schoof · 1 pointr/compsci

read "The Little Schemer":

http://www.amazon.com/The-Little-Schemer-4th-Edition/dp/0262560992/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1341278967&amp;amp;sr=1-1&amp;amp;keywords=the+little+schemer

It'll turn your brain inside-out, and you'll learn more about recursion in this short book than I think you will in most other places

u/asciilifeform · 1 pointr/reddit.com

Anyone else notice the thinly veiled Little Schemer reference?

u/ddp · 1 pointr/lisp

If you're on OS X, you should also check out Clozure, not that SBCL isn't a fine choice. But Clozure has a functional Objective-C bridge that let's you write native applications on OS X. Both have a vastly superior debugging environment running under SLIME in emacs. Chicken debugging is unfortunately not much fun in comparison. That aside, Chicken's egg repository is a treasure trove and it's trivial to install and use them. The same cannot be said for ASDF[-INSTALL]. Depending on what Lisp libraries you're trying to install, you can easily end up in a mire of abandoned software. And while Cliki makes it appear like there's a lot of choice, I find that choice somewhat misleading: there's often 13 different libraries to wade through but only one or two that are still being maintained, if you're lucky. It takes a lot of time to vet the dependencies. On the other hand, I've found the quality of Chicken eggs to be much higher on average. This is not meant in any way to disparage any of the Lisp libraries, it's just that so many of them are no longer being actively developed and since so much of what we write these days depends on evolving Internet standards, having stale libraries is a real impediment. Chicken is a labor of love and it shows. It's also embeddable in C which is just insanely useful if you ever were to need it.

There are significantly worse things in life than working your way through The Little Schemer or SICP. Stick with Scheme though if you're going to be doing either. While the exercises can be expressed in Lisp, they're no fun to write in Lisp for reasons that are beyond the scope of a reddit comment. Once you know either you can switch back and forth fairly easily, though porting code between them, not so much.

u/nmtake · 1 pointr/learnprogramming
u/Pandarr · 1 pointr/javahelp

I just started reading Effective Java about 2 days ago and am already 1/3rd through it. Very good stuff even though I've been doing Java for a good 8 years or so. Depending on your level some of it might be over your head but you can skip a section and come back to it later. Knowing some good habits is better than knowing none! I also got the Java Puzzlers: Traps, Pitfalls, and Corner Cases book and man that's a tough book. It's very easy to read and understand but so far I haven't figured out any of the puzzles on my own although I'm only about 10 in. So far I can't imagine encountering any of these situations in the real world (or at least my office) but it's good to know and understand them because I'm sure at least one will eventually happen.

u/zoqfotpik · 1 pointr/cscareerquestions

If you think you know Java, then read Effective Java.

Once you're through reading that, and you think that now you really know Java, read Java Concurrency in Practice.

There may be something more than these that's worth reading, but I haven't found it yet.

u/jumpkick · 1 pointr/androiddev

Buy this book: http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601 read chapters 1-5. Then read chapters 1-5 again.

Edit: it'll be the best $35 you'll ever spend on a Java book. When I interview people for position on my (Android dev) team, I specifically ask them concurrency questions. Knowing and understanding Java concurrency is an absolute must for professional Android development.

u/Patman128 · 1 pointr/node

&gt; But it is still a lot more complicated that just letting the computer handle multithreading for you like you would in Java, C#, python

Not at all. Java Concurrency In Practice is 384 pages long for a reason. The way Node does concurrency is way simpler than using threads with manual synchronization.

u/Yithar · 1 pointr/javahelp

https://www.amazon.com/Functional-Programming-Java-Harnessing-Expressions/dp/1937785467
https://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601

First book deals with Functional Programming in Java, which is another way of doing things compared to the Object-Oriented Paradigm.

Second book deals with Concurrency, which is a really important topic imo.

u/MassiveDiarrhea · 1 pointr/java
u/kylebalkissoon · 1 pointr/algotrading
u/jj2parkie · 1 pointr/learnprogramming

I started programming in Java few months ago to develop Android applications. These are the resources I used:

  • Java 8 Pocket Guide: This book is very short in length and paper size. It is great to learn the syntax of Java 8 really fast with a general overview of the core libraries in Java SE 8.
  • Effective Java (2nd Edition): After learning the syntax of Java 8, this classic book discusses the best practices of using the Java language in a list of around 78 items. For example, "Item 1" is "Consider static factory methods instead of constructors", and then it explains why.
  • Java Concurrency in Practice: This book is also another classic which a lot of people use to learn concurrent programming for the Java language. It's a difficult book for me: very technical.
    • Introduction to Rx: Netflix has ported the Reactive Extensions library from the .NET platform to the JVM which you can find here: RxJava. It's Wiki with their marble diagrams are amazing. It allows a lot of the new features of Java 8 such as lambdas to utilize functional reactive programming for the Java language. It's all about Observables, and it's main purpose behind its development was to allow the Netflix team to prevent everyone from reading Java Concurrency in Practice as it trivializes concurrency especially for medium to large systems.
  • Clean Code: A Handbook of Agile Software Craftsmanship: This book is also another classic. It uses Java I believe for the examples. A lot of people love this book as a higher level supplement to Effective Java (I think) because it covers best practices for the Java language in designing code for emerging systems or scale-able systems and other topics like TDD.
  • Design Patterns: Elements of Reusable Object-Oriented Software: This book is the classic book (emphasis on "the"). It lists a lot of design patterns which you can use for languages like Java or others. The samples are written in C++ so since you have an experience with C, it can help. I loved this book for learning about Factories, Singletons, Decorators, Observers, Adapters, and more. Using design patterns really helped me solve design problems in my Android application so that it can be easily refractorable.
  • Introduction to Algorithms: The classic standard algorithms and data structures book I suggest if you are not familiar with them. Knowing the concepts can help fine tune your applications performance wise even if you do not implement any algorithms or data structures yourself.
  • Software Engineering: A Practitioner's Approach: A kind-of classic book about the software engineering profession. Its five parts are the following: "The Software Process", "Modeling", "Quality Management", "Managing Software Projects", and "Advanced Topics". Along the way through the book you gain a general understanding of how to write requirements, UML diagrams, and the like.

    All of these books except for the first are near 400 pages each. However, most of them do not require you to read all of it. It would be great to read them entirely, but you can still make do by reading the sections you need the most. A lot of the books listed as classics are books I found that a lot of universities use as I was browsing some curricula. This list focuses upon general programming as I believe mobile development and web development are just learning how to use frameworks which I consider trivial to learn generally since a lot of people say that if they work a place that uses framework X, their workplace gives them some time to brush up or get up-to-speed with the framework and how to use it over a few days unless you require a niche or complex solution to a problem.

    If you are not a huge fan of books, searching these titles will probably provide online tutorials or videos. The Amazon links can provide great reviews and suggestions. I like the books even if they are a bit long because of their professionalism, review, and rigor associated with the publication process of these textbooks that inhibits the rise of bad habits which might be introduced by online sources.

    I do not know your background with these topics, so you may already know the, but these are the resources I think which really helps people transition from just knowing syntax as "knowing a language" which they translate to "I'm proficient in X because I can write a program which allows you to save text to a file" to knowing a language regarding software engineering concepts which helps you work properly on projects medium to large projects you would find in a workplace as an intern maybe entry-level employee (but more formal education might be required).

    However, I'm pretty much like a high school student (took a year off before starting college to recover from an illness), so take my advice with a lot of salt, but these books which I couldn't apply 100% helped me make a small-medium sized Android application: https://github.com/jparkie/Aizoban which was designed enough to allow me to manage refractoring to introduce new features or fix issues which I believe would have been impossible if I hacked my way through to write around 35,000 lines of code.
u/phonyphonecall · 1 pointr/java

Highly recommend learning it right the first time by reading Java Concurrency in Practice.

u/sankyo · 1 pointr/Clojure

In short, unless you spend all of your time writing boring, vanilla business logic, you will spend a lot of time with your fact in this book "Java Concurrency in practice" by Brian Goetz, which is a good book, but at some point you may wonder just what the hell you are doing with your life and if programming with thread has to be so complicated.

Pretty sure Rich already did this and we can learn from his journey.

u/sonay · 1 pointr/linux

If you want to program in Java, I would also suggest IntelliJ Idea. Community edition^[1] is free. Oracle docs are fine^[2], javadocs^[3] are great and the source is free for OpenJDK and if you want to go pro I highly recommend Effective Java^[4] by Joshua Bloch. There is also Findbugs^[5] which is cool for static analysis and most of the popular IDEs have plugins for it. You should also check Concurrency In Practice^[6] for multithreaded programming. If you are into web programming, I highly suggest Head First Servlets and JSP^[7]. There are also very good libraries such as Google Guava, Apache Commons etc.

  1. http://www.jetbrains.com/idea/features/editions_comparison_matrix.html
  2. http://docs.oracle.com/javase/tutorial/
  3. http://docs.oracle.com/javase/7/docs/api/
  4. http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683
  5. http://findbugs.sourceforge.net/
  6. http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601
  7. http://www.amazon.com/Head-First-Servlets-JSP-Certified/dp/0596516681

u/sleepybychoice · 1 pointr/learnprogramming

Do you have anything specific you want to improve on?

Here's a few that I liked that are specific to Java:

u/DDB- · 1 pointr/EngineeringStudents

I can't help with MATLAB much, but with Java I'd recommend a couple things.

For books, The Java Programming Language, from the creators of Java is an excellent resource. Another book that is not specifically Java related that I recommend is The Pragmatic Programmer: From Journeyman to Master, as it is a great book on programming practices and good things to know. I've read or looked at a bunch of the books by the Pragmatic guys and they are all really good if you ever get into other languages as well.

In general though for all programming, the most practical way to learn is to start with simple problems that interest you, or maybe ones from sites like Project Euler and just learn by doing. There are lots of great tutorials online, and if you ever get stuck, Google and Stack Overflow are your friends.

u/nivek · 1 pointr/web_design

Yes, you'll need the book. It is a great HTML/CSS book though. If you check the reviews on Amazon you'll see that it's highly regarded.

If you need to wait a few days for the book to arrive, you can order it soon and you should still have plenty of time to catch up in the class. It's not going to be too time-consuming.

u/iamanetizen · 1 pointr/programming

I completely understand how you feel. I was in the same shoes. I picked up the following two books very recently &amp; finished them cover to cover. I would strongly recommend them to you. Both books are very easy read &amp; should not be a problem to finish them in weeks.

  1. Learning web design - Jennifer Niederst Robbins - This is a beginners book on web design.
    2 Bulletproof web design - Dan Cederholm - This is bit advanced &amp; shows best practices in CSS. Again a very good read.
    Finally, my own blog article on HTML &amp; CSS authoring that I wrote a few days ago if you care to read.
u/qwerty_danny · 1 pointr/learnprogramming

Try C programming: A modern approach K&amp;R is the classic, but it only covers up to the ANSI C (C89) standard.

u/TyphonRT · 0 pointsr/java

You can't go wrong with these two books:
http://www.amazon.com/Java-Puzzlers-Traps-Pitfalls-Corner/dp/032133678X/

http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683

Joshua Bloch is a good author and was involved in implementing the Java API (collections API, etc.) early on...

You can also find several talks he's done online for Java puzzlers.

Some good presentations online (including some puzzler ones):
https://www.youtube.com/results?search_query=joshua+bloch

u/toomanybeersies · 0 pointsr/webdev

The C Programming Language (aka K&amp;R)

Everyone should have a copy of this book on the shelf. Sure there's arguably better books for learning C, and K&amp;R hasn't even been updated in 28 years (the code in the book is not valid c99). But it's like the holy bible of programming books.

Hackers: Heroes of the Computer Revolution is worth a read.

All of Kevin Mitnick's books are good.

I'd honestly not really bother buying any books for learning actual programming from, since most stuff moves so fast, and there's so much material online to learn from.

u/utdesi · 0 pointsr/learnprogramming

This book teaches you how to program in C! It does not hit theory hard. It is considered one of the premier programing books. Full of practical knowledge.

C Programming Language, 2nd Edition by Brian W. Kernighan et al. http://www.amazon.com/dp/0131103628/ref=cm_sw_r_udp_awd_eJWltb0PHPQFQ

I recommend if you want to learn programming concepts
Google: python the hard way

u/jabjoe · 0 pointsr/linux

I hope that is sarcasm, if not, here's some bed time reading.

http://www.amazon.com/Hackers-Computer-Revolutio-Steven-Levy/dp/0385312105

http://www.amazon.com/Lions-Commentary-Unix-John/dp/1573980137/

http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/

Unix is more than a simplified Multric knock off and C is more than some language cobbled together.

u/Chibdibs · 0 pointsr/learnprogramming

I highly recommend using this book: "C The Programming Language"

https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628

It was my first book for learning C. And I think great for someone starting out. It has plenty of problems and is very informational. Use Youtube tutorials by people like Derek Banas and TheNewBoston to help start programming in C.

u/SuperCoupe · 0 pointsr/math

Shit, my copy of "The C Programming Language" was $50 like 20 years ago, and that was an important and dense book even at ~270 pages.

That better be some quality documentation on what is essentially a GNU project.

u/KopixKat · 0 pointsr/learnprogramming
u/verylittlefinger · 0 pointsr/SeattleWA

You don’t have to be on Reddit. You could be reading this book instead: https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

u/stdnull · 0 pointsr/C_Programming

Hello there,
I can really suggest reading C Programming Language, 2nd Edition for questions related to the C-programming-language! Other than that this interactive tutorial pretty much points out the most important subjects you need to know to master the language.

u/poohshoes · 0 pointsr/gamedev

Everyone is giving some conflicting advice so here's my also conflicting two cents.

  1. C++ is a perfectly valid language to start learning on. BUT don't use any complex language features to start. C is more or less a subset of C++ so consider checking out some C tutorials.

  2. Don't worry about learning OO for now, a large minority of people don't even think it's good.

  3. Just keep working away at it, it takes a lot of time, find a good textbook or website with small problems that you can solve.




    Here are some of the books I learned with:

    https://www.amazon.ca/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

    https://www.amazon.ca/How-Program-10th-Paul-Deitel/dp/0134448235/ref=sr_1_1?ie=UTF8&amp;amp;qid=1501953321&amp;amp;sr=8-1&amp;amp;keywords=deitel+how+to+program
u/RichAndHung · 0 pointsr/programming

"C is quirky, flawed, and an enormous success." — Dennis M. Ritchie.

Look it up: C Programming Language

u/AlmondRoast · 0 pointsr/learnprogramming

If you're mainly interested in Java, I would recommend Effective Java by Joshua Bloch. It's a great guide with recommendations for best practices in the language.

For C, the best book is The C Programming Language by Kernighan and Ritchie. I would recommend that you read that before ever looking at C++ because C++ is based on C. In fact, it's such a great book that I would recommend reading it before you read anything else on any language. You can skip the file system and Unix stuff though.

For C++, I have never found a good beginner book, so my suggestion would be that after you read the above C book, read the stuff in this tutorial and then read Effective C++ by Scott Meyers. It's another best practices book.

For Python, I've heard good things about Learning Python but I don't really know. I actually found it more useful to just go through the Python tutorial and then start making fun little scripts.

Hope that helps!

u/nonades · 0 pointsr/netsec

So is this one. That doesn't make it any less good.

u/Jmannm8400 · 0 pointsr/learnprogramming

To add to what others have been saying, if you choose to learn C, I would suggest that you pick up a copy of The C Programming Language, by Brian Kernighan and Dennis Ritchie - one of the go-to books for learning how to program in C.

And, perhaps one of the reasons this book is one of the first you should check out when it comes to learning C, Dennis Ritchie was one of the guys who created the C programming language itself!

Best of luck with learning C and/or C++ and I hope this helped you!

u/quotemycode · 0 pointsr/learnprogramming

C++ is not what you need to learn then, you need just plain old ANSI-C. Yes, there is a difference.

Amazon link: The C Programming Language

You might be able to find a book in your local library.

u/lavidaesbella · -1 pointsr/learnprogramming

You should not look the source code of the libs if you want to learn how C works, their code it's full of complex concepts of C programming like a lot of preprocessor, abstract structures and complex algorithms (dynamic programming, divide and conquer, backtracking, etc).

If you don't know how UNIX programming works you should start there, like process control, file and dir management, threading, networking. A lot more useful to learn pure C than the standard libs implementations.

For UNIX programming read this: Stevens

To improve your knowledge in C: K&amp;R and as a complement king.

If you insist in reading library implementation take a look at OpenBSD libs implementation (much clutter-less than GNU).

Oh, and also do yourself a big favor and learn Vim reading learning vim.

Knowing the basics of C language and UNIX programming is the way to become a true programmer/hacker.

u/zitterbewegung · -1 pointsr/programming

You could try learning scheme. Try out the little schemer .
Then graduate to SICP

u/chrizel · -2 pointsr/apple

Start with a language like Python. After that it is easier for you to learn C, because you will know at least the basic programming constructs like If-statements, loops, variables etc.

I would learn C with the book The C Programming Language. It's the standard bible for C, short and to the point, and one of the best technical books ever. A good C knowledge is IMHO necessary and useful, because sooner or later you have to use C libraries or at least fall back to the C interfaces of Mac OS or iPhone OS to do certain things that aren't there in the Objective-C abstraction layers.

After you have a solid C knowledge, you can learn about Object Oriented Programming and Objective-C. Apple has a good introduction to both topics: Introduction to The Objective-C Programming Language.

After you know the language, you can learn about Cocoa in the Cocoa Fundamentals Guide and do your first graphical Cocoa application with Xcode and Interface Builder with the Cocoa Application Tutorial.

Then buy the book Cocoa Programming for Mac OS X by Aaron Hillegass. You will learn to use some of the most important Cocoa classes. After that you can stay with the Apple docs and reference.

When you know Cocoa, you can do your first steps with iPhone development very easily by watching the peepcode.com introduction videos IPHONE VIEW CONTROLLERS PART I and IPHONE VIEW CONTROLLERS PART II - oh, peepcode has even a Objective-C introduction video OBJECTIVE-C FOR RUBYISTS but it's very ruby-centric...

u/cubicledrone · -2 pointsr/linux

Look at me, everyone! I'm smarter than the authors of:

http://amzn.com/0131103628

Please lecture us. After all, those men are only a Harvard graduate decorated by the president of the United States and a Princeton professor with a PhD in Electrical Engineering.

u/nameless912 · -3 pointsr/UIUC

Go out and buy K&amp;R's "The C Programming Language". It's about 50 bucks on Amazon, and it's the definitive guide to C.

C++ is a derivation (and in fact, a strict superset) of C. So, anything that works in C works in C++. The book will get you acquainted with pointers, structs, and all the things that make C totally different than Java.

The best way I can describe C++ is if Java and C had a bastard child-a lot of the concepts from Java (object orientation, a class library, etc.) translate pretty directly, but a lot of stuff (pointers, memory allocation/deallocation, structs, unions) come from C. I find that these topics are much easier to learn through C rather than C++.

C doesn't contain much resemblance to Java because it has no object orientation (i.e. you can't have "objects", nor can you have "object methods" which only act upon the data in that object) which makes it a very weird experience for someone with only Java programming experience, but being able to program in straight ANSI C is an invaluable skill and it will put you WAY ahead in 225.

Here's a link. Trust me, don't rent this book, BUY it. You will use it for years to come.

Also, if you want a book that strictly covers C++ (I would only recommend this after you go through all of K&amp;R), go ahead and get this one. It's easily the best C++ reference I know of.

u/icantthinkofone · -5 pointsr/C_Programming

&gt;How do I go about installing libraries?

You don't install libraries. Either you compile them in as source code or you call them using your operating system or include them with your build command.

&gt;Is there a package manager?

For what? This has nothing to do with the language. There are no "packages".

The rest of your questions are based on lack of fundamental knowledge and things learned from sources that have nothing to do with C. You need to find a very simple intro to get you going. Even though it's old and not modern, the very best book as an intro to C is "the white book". Easy to read by the author of C himself. Over 30 years later, I still have it sitting on my shelf as a homage if nothing else.

EDIT: As always, I'm not surprised about redditors inability to read what I wrote and insert words I never said.