(Part 2) Reddit mentions: The best computers & technology books

We found 39,382 Reddit comments discussing the best computers & technology books. We ran sentiment analysis on each of these comments to determine how redditors feel about different products. We found 9,387 products and ranked them based on the amount of positive reactions they received. Here are the products ranked 21-40. You can also go back to the previous section.

21. The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography

    Features:
  • Anchor Books
The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography
Specs:
ColorTan
Height7.96 Inches
Length5.12 Inches
Number of items1
Release dateAugust 2000
Weight0.87 Pounds
Width0.87 Inches
▼ Read Reddit mentions

23. Refactoring: Improving the Design of Existing Code

    Features:
  • Addison-Wesley Professional
Refactoring: Improving the Design of Existing Code
Specs:
ColorCream
Height9.25 Inches
Length1 Inches
Number of items1
Weight2.0502990366 Pounds
Width7.5 Inches
▼ Read Reddit mentions

24. Effective C++: 55 Specific Ways to Improve Your Programs and Designs (Professional Computing)

    Features:
  • Addison-Wesley Professional
Effective C++: 55 Specific Ways to Improve Your Programs and Designs (Professional Computing)
Specs:
ColorPaperback,
Height9.25 Inches
Length7.35 Inches
Number of items1
Release dateMay 2005
Weight1.2345886672 Pounds
Width1 Inches
▼ Read Reddit mentions

26. Artificial Intelligence: A Modern Approach (3rd Edition)

    Features:
  • Overnight shipping available
Artificial Intelligence: A Modern Approach (3rd Edition)
Specs:
Height11.1 Inches
Length9.2 Inches
Number of items1
Weight4.40042674952 Pounds
Width2.05 Inches
▼ Read Reddit mentions

27. CompTIA A+ Certification All-in-One Exam Guide, Ninth Edition (Exams 220-901 & 220-902)

    Features:
  • McGraw-Hill Osborne Media
CompTIA A+ Certification All-in-One Exam Guide, Ninth Edition (Exams 220-901 & 220-902)
Specs:
Height9.3 Inches
Length7.5 Inches
Number of items1
Weight5.14558919508 Pounds
Width2.4 Inches
▼ Read Reddit mentions

28. Algorithms (4th Edition)

    Features:
  • Addison-Wesley Professional
Algorithms (4th Edition)
Specs:
Height9.3 Inches
Length7.7 Inches
Number of items1
Weight3.1636334597 Pounds
Width1.4 Inches
▼ Read Reddit mentions

29. The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws

    Features:
  • Comes with secure packaging
  • It can be a gift item
  • Easy to read text
The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws
Specs:
Height9.098407 Inches
Length7.40156 Inches
Number of items1
Weight2.68082110592 Pounds
Width1.999996 Inches
▼ Read Reddit mentions

30. Learn Windows PowerShell in a Month of Lunches

    Features:
  • Used Book in Good Condition
Learn Windows PowerShell in a Month of Lunches
Specs:
Height9.25 Inches
Length7.38 Inches
Number of items1
Weight1.33600130772 Pounds
Width0.78 Inches
▼ Read Reddit mentions

33. Programming: Principles and Practice Using C++ (2nd Edition)

    Features:
  • Addison-Wesley Professional
Programming: Principles and Practice Using C++ (2nd Edition)
Specs:
Height1.64 Inches
Length9.25 Inches
Number of items1
Weight3.78974628378 Pounds
Width7.38 Inches
▼ Read Reddit mentions

34. Accelerated C++: Practical Programming by Example

    Features:
  • Addison-Wesley Professional
Accelerated C++: Practical Programming by Example
Specs:
ColorRed
Height9.15 inches
Length7.4 inches
Number of items1
Release dateAugust 2000
Weight1.39332149584 pounds
Width1 inches
▼ Read Reddit mentions

36. Make: Electronics (Learning by Discovery)

    Features:
  • Free Shipping on orders over $50
Make: Electronics (Learning by Discovery)
Specs:
ColorOne Color
Height9.75 Inches
Length8 Inches
Number of items1
SizeOne Size
Weight1.76 Pounds
Width0.7 Inches
▼ Read Reddit mentions

38. The Algorithm Design Manual

    Features:
  • More and Improved Homework Problems
  • Self-Motivating Exam Design
  • Take-Home Lessons
  • Links to Programming Challenge Problems
  • More Code, Less Pseudo-code
The Algorithm Design Manual
Specs:
Height9.3 Inches
Length7.3 Inches
Number of items1
Release dateApril 2011
Weight2.3368999772 Pounds
Width1.4 Inches
▼ Read Reddit mentions

40. Pattern Recognition and Machine Learning (Information Science and Statistics)

    Features:
  • Springer
Pattern Recognition and Machine Learning (Information Science and Statistics)
Specs:
Height10.2 Inches
Length7.7 Inches
Number of items1
Release dateApril 2011
Weight4.73332476514 Pounds
Width1.3 Inches
▼ Read Reddit mentions

🎓 Reddit experts on computers & technology books

The comments and opinions expressed on this page are written exclusively by redditors. To provide you with the most relevant data, we sourced opinions from the most knowledgeable Reddit users based the total number of upvotes and downvotes received across comments on subreddits where computers & technology books are discussed. For your reference and for the sake of transparency, here are the specialists whose opinions mattered the most in our ranking.
Total score: 14,765
Number of comments: 125
Relevant subreddits: 7
Total score: 623
Number of comments: 334
Relevant subreddits: 5
Total score: 571
Number of comments: 87
Relevant subreddits: 3
Total score: 487
Number of comments: 62
Relevant subreddits: 2
Total score: 415
Number of comments: 72
Relevant subreddits: 4
Total score: 295
Number of comments: 89
Relevant subreddits: 3
Total score: 280
Number of comments: 65
Relevant subreddits: 7
Total score: 235
Number of comments: 78
Relevant subreddits: 7
Total score: 153
Number of comments: 70
Relevant subreddits: 8
Total score: -230
Number of comments: 68
Relevant subreddits: 9
📹 Video recap
If you prefer video reviews, we made a video where we go through the best computers & technology books according to redditors. For more video reviews about products mentioned on Reddit, subscribe to our YouTube channel.

idea-bulb Interested in what Redditors like? Check out our Shuffle feature

Shuffle: random products popular on Reddit

Top Reddit comments about Computers & Technology:

u/empleadoEstatalBot · 1 pointr/argentina
	


	


	


> # Teach Yourself Computer Science
>
>
>
> If you’re a self-taught engineer or bootcamp grad, you owe it to yourself to learn computer science. Thankfully, you can give yourself a world-class CS education without investing years and a small fortune in a degree program 💸.
>
> There are plenty of resources out there, but some are better than others. You don’t need yet another “200+ Free Online Courses” listicle. You need answers to these questions:
>
> - Which subjects should you learn, and why?
> - What is the best book or video lecture series for each subject?
>
> This guide is our attempt to definitively answer these questions.
>
> ## TL;DR:
>
> Study all nine subjects below, in roughly the presented order, using either the suggested textbook or video lecture series, but ideally both. Aim for 100-200 hours of study of each topic, then revist favorites throughout your career 🚀.
>
>
>
>
>
> Subject Why study? Best book Best videos Programming Don’t be the person who “never quite understood” something like recursion. Structure and Interpretation of Computer Programs Brian Harvey’s Berkeley CS 61A Computer Architecture If you don’t have a solid mental model of how a computer actually works, all of your higher-level abstractions will be brittle. Computer Organization and Design Berkeley CS 61C Algorithms and Data Structures If you don’t know how to use ubiquitous data structures like stacks, queues, trees, and graphs, you won’t be able to solve hard problems. The Algorithm Design Manual Steven Skiena’s lectures Math for CS CS is basically a runaway branch of applied math, so learning math will give you a competitive advantage. Mathematics for Computer Science Tom Leighton’s MIT 6.042J Operating Systems Most of the code you write is run by an operating system, so you should know how those interact. Operating Systems: Three Easy Pieces Berkeley CS 162 Computer Networking The Internet turned out to be a big deal: understand how it works to unlock its full potential. Computer Networking: A Top-Down Approach Stanford CS 144 Databases Data is at the heart of most significant programs, but few understand how database systems actually work. Readings in Database Systems Joe Hellerstein’s Berkeley CS 186 Languages and Compilers If you understand how languages and compilers actually work, you’ll write better code and learn new languages more easily. Compilers: Principles, Techniques and Tools Alex Aiken’s course on Lagunita Distributed Systems These days, most systems are distributed systems. Distributed Systems, 3rd Edition by Maarten van Steen 🤷‍
>
> ## Why learn computer science?
>
> There are 2 types of software engineer: those who understand computer science well enough to do challenging, innovative work, and those who just get by because they’re familiar with a few high level tools.
>
> Both call themselves software engineers, and both tend to earn similar salaries in their early careers. But Type 1 engineers grow in to more fullfilling and well-remunerated work over time, whether that’s valuable commercial work or breakthrough open-source projects, technical leadership or high-quality individual contributions.
>
>
>
> Type 1 engineers find ways to learn computer science in depth, whether through conventional means or by relentlessly learning throughout their careers. Type 2 engineers typically stay at the surface, learning specific tools and technologies rather than their underlying foundations, only picking up new skills when the winds of technical fashion change.
>
> Currently, the number of people entering the industry is rapidly increasing, while the number of CS grads is essentially static. This oversupply of Type 2 engineers is starting to reduce their employment opportunities and keep them out of the industry’s more fulfilling work. Whether you’re striving to become a Type 1 engineer or simply looking for more job security, learning computer science is the only reliable path.
>
>
>
>
>
> ## Subject guides
>
> ### Programming
>
> Most undergraduate CS programs start with an “introduction” to computer programming. The best versions of these courses cater not just to novices, but also to those who missed beneficial concepts and programming models while first learning to code.
>
> Our standard recommendation for this content is the classic Structure and Interpretation of Computer Programs, which is available online for free both as a book, and as a set of MIT video lectures. While those lectures are great, our video suggestion is actually Brian Harvey’s SICP lectures (for the 61A course at Berkeley) instead. These are more refined and better targeted at new students than are the MIT lectures.
>
> We recommend working through at least the first three chapters of SICP and doing the exercises. For additional practice, work through a set of small programming problems like those on exercism.
>
> For those who find SICP too challenging, we recommend How to Design Programs. For those who find it too easy, we recommend Concepts, Techniques, and Models of Computer Programming.
>
>
>
> [Structure and Interpretation of Computer Programs](https://teachyourselfcs.com//sicp.jpg)
>
>
>
> ### Computer Architecture
>
> Computer Architecture—sometimes called “computer systems” or “computer organization”—is an important first look at computing below the surface of software. In our experience, it’s the most neglected area among self-taught software engineers.
>
> The Elements of Computing Systems, also known as “Nand2Tetris” is an ambitious book attempting to give you a cohesive understanding of how everything in a computer works. Each chapter involves building a small piece of the overall system, from writing elementary logic gates in HDL, through a CPU and assembler, all the way to an application the size of a Tetris game.
>
> We recommend reading through the first six chapters of the book and completing the associated projects. This will develop your understanding of the relationship between the architecture of the machine and the software that runs on it.
>
> The first half of the book (and all of its projects), are available for free from the Nand2Tetris website. It’s also available as a Coursera course with accompanying videos.
>
> In seeking simplicity and cohesiveness, Nand2Tetris trades off depth. In particular, two very important concepts in modern computer architectures are pipelining and memory hierarchy, but both are mostly absent from the text.
>
> Once you feel comfortable with the content of Nand2Tetris, our next suggestion is Patterson and Hennesy’s Computer Organization and Design, an excellent and now classic text. Not every section in the book is essential; we suggest following Berkeley’s CS61C course “Great Ideas in Computer Architecture” for specific readings. The lecture notes and labs are available online, and past lectures are on the Internet Archive.
>
>
>
>
>
> ### Algorithms and Data Structures
>
> We agree with decades of common wisdom that familiarity with common algorithms and data structures is one of the most empowering aspects of a computer science education. This is also a great place to train one’s general problem-solving abilities, which will pay off in every other area of study.
>
> There are hundreds of books available, but our favorite is The Algorithm Design Manual by Steven Skiena. He clearly loves this stuff and can’t wait to help you understand it. This is a refreshing change, in our opinion, from the more commonly recommended Cormen, Leiserson, Rivest & Stein, or Sedgewick books. These last two texts tend to be too proof-heavy for those learning the material primarily to help them solve problems.
>

> (continues in next comment)

u/robscomputer · 2 pointsr/linuxadmin

A few of my favorite books I reference and recommend. Just a note, many of these are older and can be purchased used for much less. Also if you can afford it, get a Safari subscription. I use my work Safari subscription but this alone has saved me from my book buying habit. Now I only buy "must have" books. :)

Official Ubuntu Server book - I really like this book as the writing style helped me "get it" with Linux. Kyle Rankin has a very good method of showing you the technology and then a quick run down to get the server working, followed by some admin tips. It's a just scratching the surface type of book but it's enough to get you started. I rarely use Ubuntu now, but this book helped me understand DNS and other topics that were IMHO harder to grasp from other books.

As a bonus, this book also has an entire chapter dedicated to troubleshooting. While this sounds obvious, it's a great read as it talks about dividing the problem, how to approach the facts, etc. Stuff a seasoned admin would know but might be hard to explain to a new admin.

The Linux Command Line: A Complete Introduction - You can read this book for free on the site, but having a paper copy is nice. As mentioned, you should have a very solid understanding of the command line. In my experience, I have seen co-workers struggle with basic shell scripting and even understanding how to make a single line for loop. This book covers the basics, moving to shell scripting and I think it's a good solid reference guide as well.

DevOps Troubleshooting: Linux Server Best Practices - This book is referenced a few times here but I'll throw another comment for it. Another book from Kyle Rankin and has the same straight to the point writing style. It's very quick reference and simple enough that you could give this to a new sysadmin and he or she could get started with some of the basic tools. While the book covers a good selection of basic services and tools, it's easy to get deeper into a chapter and find it's only discussing a handful of troubleshooting steps. The idea with this book is it's a quick reference guide, and if you want to get deeper into troubleshooting or performance, take a look at other books on the market. Either way, this is a great book I keep on my desk or reference through Safari.

UNIX and Linux System Administration Handbook (4th Edition) - Another popular book based on the comments here. This is a pretty big book, thin pages, but it's like a small brick of UNIX/Linux knowledge. While it's starting to get dated, it does give a great reference to many topics in the system administration world. The chapters can dive deep into the subject and offer more than enough information to get started but also understand the technology. The e-mail chapter I thought was great as well as the DNS. I think of this book as a overall guide and if I want to know more, I would read a book just on the subject, that's if I need more information. One thing to point out is this book makes use of different OS's so it's filled with references to Solaris, different UNIX versions, etc. Not a problem but just keep in mind the author may be talking about something outside the scope of vanilla Linux.

Shell Scripting: Expert Recipes for Linux, Bash and more - I found this book to be a good extenstion of the Linux Command Line book, but there are many many other Bash/Shell scripting books out there. The author has many of the topics discussed on his site but the book is a good reference for scripting. I can't stress enough how important shell scripting is. While it's good to know a more formal language like Python/Perl/etc, you are almost certain bash will be on the machine you are working on.

Systems Performance: Enterprise and the Cloud - I can't comment on this book beyond the first chapter, I'm still reading it now but it's reading similar to Brendan Gregg's site, and that's a great thing. If you don't know who this guy is, he's one of the top performance guys in the Solaris and now Linux world. He has some great infographics on his site, which I use for reference.

Use method for Linux

Linux Performance

Example of Linux performance monitoring tools

Hope this helps!

u/MetaSemaphore · 2 pointsr/webdev

Hey there! I recently finished this course and also recently got my first offer for a Jr. Front-End Developer role after about a year and a half of self-study. Colt's course is awesome, and I found it to be the best single resource on web development I encountered. So I think you've picked a really good place to start. But, that being said, it is just a starting point (even a full-time $10k boot camp is just a starting point), and you probably will need to look into other resources as well.

I will second what others have said that I found the Rob Percival course underwhelming, but there's a lot of other stuff out there that I would recommend. Note: I'm going to go a bit link crazy here, and I know that might seem a bit overwhelming, but I'm figuring it's better to give you more rather than less; your mileage may vary, and you may not need all of these. These are just the resources I found most helpful.

Free Code Camp is a great place to find practice problems to work through, mainly when it comes to front-end. I can't stand using it end-to-end as a learning path, but others love it. So, different strokes and all that.

CSS Tricks is a really great blog and site for learning how to do advanced CSS stuff. And the site founder Chris Coyier, also hosts a really great podcast called Shop Talk that's all about front end.

John Duckett's books HTML & CSS and JavaScript & JQuery are really pretty and very noob friendly. The JS one does have some errors, so be wary of that, but I found it really helpful for getting a sense of the underpinnings of the language while reading on the train.

You Don't Know JS Is a great book series that is all available online for free and will really help you solidify your JS knowledge.

JavaScript: Understanding the Weird Parts is another Udemy course that does a deep dive of JS (Udemy always has sales, by the way, so never pay full price for their courses).

JavaScript Design Patterns is a free course on Udacity that is super helpful in introducing you to JS frameworks and MV* design patterns. Note that, while you can pay to do a "Nanodegree" through Udacity, you can also access a lot of their courses for free, so I would recommend trawling through them--there's a lot of good stuff on there.

JavaScript 30 is a 30-day structured course in building stuff with vanilla JS by Wes Bos, who has a lot of other good courses as well (though some of them are paid).

Practical JavaScript This is one I've actually just started working through, but so far, I'm really enjoying it. Again, this is free. It will introduce you to test-driven development and give you a better sense of how to plan your own projects, while also not getting mired in any frameworks.

If you want to go into the bowels of the framework world, though:

The udemy course I did first for React/Redux now seems to have been taken down by its creator so that he can update it. But it was called The Complete React Web App Developer Course by Andrew Mead, and when it comes back in updated form (hopefully soon), I would definitely recommend it. If you like Colt's teaching style, Andrew's has a lot of the same feel (excited, but really detailed explanations, and goes over things 50 times in different projects and contexts so that you really learn them). I've also started doing Stephen Grider's Modern React with Redux, and it seems really good so far (though I'm not that far into it, so take it with a grain of salt).

React Fundamentals is another awesome free course by one of the developers of react-router.

u/Letmefixthatforyouyo · 2 pointsr/pcmasterrace

Okay. A lot to go over here. I work with both linux/windows to various degress, so Im glad to address it:

>My issue is if you're doing any sort of system administration work, typing out PowerShell's commands is going to get hella annoying. Would you rather type two characters, or thirteen every time you wanted to use a command?

Tab complete is a thing for powershell. Just typing "ge" and hitting tab will cycle through all of the "get-xxxx" commands in alphabetical order. If you can get to "get-h," its much faster to hit the command you want. Powershell gives up a few more keystrokes for much, much more accessibility. It also has heaps of default alias's and the ability to set new ones like bash, so its really just a matter of learning them or setting them to speed this up for experienced users.

>I am not entirely sure what you mean by this. Firstly, as far as I can tell the built-in help to each cmdlet is lackluster. ("get-childitem -?" for instance, compared to "ls --help") On Windows with -? it lists only the syntax and aliases, with no further explanation of what each parameter is

I see where this is confusing form a unix perspective, but you've barely scratched the surface of the powershell help syntax. Thats okay, it generally something people learn about only during dedicated study. "help command" is the correct syntax for the help files in powershell, but the help command itself has modifiers. Try -examples for a long list of the command used in context, or --full for every detail about the commands use. You can also use --showwindow to pop out the -full in a different and easier to search window.

Not only that, but each help command shows you a couple of contexts about what parameters the command can take, and in what contexts. For example, here is the syntax of get-childitem:


Get-ChildItem [[-Filter] &lt;String&gt;] [-Attributes &lt;System.Management.Automation.FlagsExpression1[System.IO.FileAttributes]&amp;gt;] [-Depth &amp;lt;UInt32&amp;gt;] [-Directory ] [-Exclude &amp;lt;String[]&amp;gt;] [-File ] [-Force ] [-Hidden ] [-Include &amp;lt;String[]&amp;gt;] -LiteralPath &amp;lt;String[]&amp;gt; [-Name ] [-ReadOnly ] [-Recurse ] [-System ] [-UseTransaction ] [&amp;lt;CommonParameters&amp;gt;]<br /> <br /> Get-ChildItem [[-Path] &amp;lt;String[]&amp;gt;] [[-Filter] &amp;lt;String&amp;gt;] [-Attributes &amp;lt;System.Management.Automation.FlagsExpression1[System.IO.FileAttributes]&gt;] [-Depth &lt;UInt32&gt;] [-Directory ] [-Exclude &lt;String[]&gt;] [-File ] [-Force ] [-Hidden ] [-Include &lt;String[]&gt;] [-Name ] [-ReadOnly ] [-Recurse ] [-System ] [-UseTransaction ] [&lt;CommonParameters&gt;]


I realize the above doesn't mean much to a layman, but the format is consistent in each powershell command, which count into 500 or so defaults, with a few thousands mixed in with the more specialized modules for things like SQL. The above tell you required parameters, ones you can optionally add, and what kind of input each parameter needs. It shows which parameters need to be strung in a specific order, and what are okay to add anywherfe. Its full of information that you get immediately when you run "help command."

&gt;For further explanation it looks like the proper method is to use "get-help get-childitem" in which case, the help files are not installed by default (at this point I couldn't be bothered, but I noticed there was a -online option which pops open a web browser which is convenient).

Yes, you do need to run update-help on a new install, or periodically, but thats a good thing. It means the help is actively updated, not written in 1986 and left alone as "good enough." Automate that help update and you will never have to think about it. Or, you can do what you did and immediately get the most updated help from inside the console, not googling around and hoping you run into the right info.

One other great thing about powershell help? There are accepted formatting standards in the community. When you start writing your own powershell modules (which are basically unix tools) you can add all the above syntax and expected info into the command in an easy way. This means that even third party tools have this kind of info.


&gt;But for commands you use frequently, you will know which parameters to pass and you're done rather quickly such as "alias dir="ls"" versus "New-Alias -Name "ls" Get-ChildItem"

I see how the above would annoy you, but i bet it was easy to find out how to make a new alias in powershell. You could even just do "new-alias "alias" new-alias" and from now on you can use "alias" if you want. Its also incredibly easy to explort/import these alias's into powershell with, you guess it, "export-alias" and "import-alias". Basically, you setup alias's once in powershell, just like in linux, and its equally easy to move them around as needed.


&gt;Unix commands e.g. "man", "vi", "less" generally share common commands. E.g. for moving between lines or pages, quitting, or searching for text.

Key word above is generally. Its completely arbitrary. Powershell? Always uses the same conventions.

&gt;Unix tools are designed in bite-sized pieces so they can be chained together

Piping and bite- sized tools are 100% a thing in powershell as well. You can pipe sort commands from select commands, move the text around, invert it, compare it to other text files, what have you. It different philosophy than unix, as unix manipulation is text based, and powershell is object based, but the end result is the same. Still, each cmdlet does only what it does. You string them together to get results, same as bash.

Another powerful thing about powershell? Almost all of Microsoft GUI products like exchange/AD/whatever actually just run powershell commands in the background. It means that each of there products, whatever they are, can all be automated with this same syntax. Once you learn how powershell works, you gain full control of every suite in their ecosystem. There isnt a comparsion for that on the linux/bash side of the aisle.

I dont defend most of what Microsoft does, but powershell is a powerhouse. If you want to learn more, the veritable powershell bible is "Learn powershell in a month of lunches" by Don jones. If you follow along just to this book, you'll put most windows administrators to shame with what you can do.

u/MrBushido2318 · 20 pointsr/gamedev

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

Beginner

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

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

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


Intermediate

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

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

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

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

Advanced

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

Graphics Programming

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

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


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

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

u/soundcult · 26 pointsr/synthesizers

Hey! I can relate exactly to where your'e coming from. I, some years ago, decided I wanted to get into building synths. I ended up getting a job at a pedal company and have spent more time learning to build and repair pedals than synths. I don't work there anymore, but it gave me a lot of perspective into the field as we also made euro-rack modules.

First up: I don't want to scare you off from this, but just want to give you a realistic perspective so that you go into this knowing what you are getting into. Making synths is hard and it's expensive. As far as electronic projects go, making a synthesizer is up there on the list. I've repaired powerplant turbine controller circuitboards that were simpler than some of the synths I've owned. This isn't to say, "don't do it!" but, expect to learn a lot of fundamental and intermediate stuff before you ever have something like a fully-featured synth that you built in your hands.

It's also expensive. A cheap synth prototype is going to cost a couple hundred bucks, easy, while a more fully-featured prototype could cost into the thousands to produce, and that's just to build one working prototype. If you want to make a run of products you're going to need money up front, and not a small amount. So, just be prepared for that inevitability.

One final note is that my perspective is broad (digital and analog) but is rooted in analog electronics because that's where I started. This isn't the only path you can take to get to where you want to go but honestly in my opinion, even if you're going to go mostly digital later, you need to understand analog.

If you have never messed with electronics much before I highly recommend the Make: Electronics book. I'm a hands-on person and this was the most effective book I found that let me study electronics fundamentals the way I wanted to; by making stuff! No matter which direction you go on (digital, analog, hybrid, DSP, SID, etc) you're going to want to know how to pick the right resistor, or how to pop an LED into a circuit, and this book will teach you that.

Solid follow-up books from there are Make: More Electronics, Practical Electronics for Inventors, How To Diagnose and Fix Everything Electronic, and The Art of Electronics. All of these books are good books that touch on different concepts you will find useful, so I encourage you to look through them and decide for yourself which of these interests you.

Around this same time, I'd encourage you to start getting into kits. Honestly, before you build anything synth, I'm going to recommend you build some pedals. Effects pedals are fun and rewarding to build without being too hard. Start with a distortion circuit and work your way up from there. Once you can build a delay pedal without freaking out, move on to euro-rack kits, or other synth kits. While you're building these kits, don't just build them, play with the circuits! Try swapping components where you think you can, or adding features. One of my first kits was a distortion pedal with a single knob, but by the time I was done tweaking on it it had five knobs and two toggle switches!

Once you're feeling somewhat comfortable with electronics, then you can dive into the holy grail of analog synth design: Make: Analog Synthesizers this amazing book was written by the brilliant Ray Wilson who recently passed away. His life's goal was to bring the art of building analog synths into the hands of anyone who wanted to learn, and there is no better place to receive his great wisdom than this book. You should also check out his website Music From Outer Space along the way, but the book covers so much more than his website.

If you make through most or all of those resources you are going to be well-equipped to take on a career in synth-building! I'm personally still on that last step (trying to find the time to tackle Make: Analog Synthesizers) but hope within the next year or two to get that under my belt and start diving in deep myself. It's been a fun journey of learning and discovery and I wouldn't trade the skills I've gained in electronics for much.

Hope this helps, good luck!

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/dmmagic · 3 pointsr/projectmanagement

I'm a consultant with an IT software company, and with the current client I'm working with, I spent my first 3 weeks doing nothing but research and interviews and gathering information. Since you're starting as essentially a junior PM, just ask the senior people or your line manager how long they expect you to research and come to understand the project before needing to deliver anything. Hopefully, if all goes well, it'll be an organic process and will sort itself out in time. Be patient and just take lots and lots of notes.

Since you're in the position of having senior PMs, there's a good chance you won't need to establish objectives, at least right off the bat. You may be doing calculations, maintaining schedules, facilitating communications, etc. I say play that one by ear. Since you're new to the process, I recommend reading The Mythical Man Month and taking it to heart. Be wary of underestimating, and do your best to take reality into account as well as ever-shifting demands.

As to what a PM generally spends their time on, it totally depends on the organization and the project. I'm not a dedicated PM, and my background is actually in IT management. That said, at my last job, I did some PM, and I'm currently getting my master's in project management and will follow that up with a PMP. As a consultant, I'm working with the PMO, among other groups, and I spend a lot of my time in meetings and communicating, both to gather requirements from stakeholders and translate those into stories, and to make sure all stakeholders are on the same page. I spend a lot of time making sure that people have proper visibility into the project, which means good reporting and keeping a lot of notes close at hand. Developing a good system for maintaining your notes is essential if you don't already have one. I rely heavily on Evernote, but I've got a methodology for Outlook, and for my file system (be it in Google Drive or Dropbox or elsewhere), and for Skype.

Making educated decisions is our job. There's a science to PM, but at the end of the day, we're humans dealing with humans. We make the call to the best of our abilities, and take responsibility to fix it if we're wrong.

Regarding passing up the opportunity, I say absolutely not. You'll learn a lot more in this position than at a lower level PC job. Approach it ready to fail and pick yourself back up, and fail fast, and you'll grow quickly. Maintain your confidence as best you can, keep finding more books and resources to read/watch/listen to, and do your best.

Another good resource I'd recommend is the Project Management for the Masses G+ community and podcast. There are a number of different PM podcasts out there that are quite good (I also recommend the People and Projects Podcast), and quite a few good books.

As you get further into it, you'll discover that PM is actually a relatively new field, really just a few decades old. There's a lot to learn, but don't get too stressed about it. Take that energy and go learn more instead :-)

u/sold_myfortune · 2 pointsr/skilledtrades

When I was 15, my uncle got me a summer job on the landscaping crew for the hospital he worked at. At six feet and two hundred twenty pounds I was physically capable, but I was still a kid out there with the grown men. The summer was full of hot, sweaty triple digit days with lots of lawn mowing, weed eating, raking, gardening, and planting. It sucked. Many time I'd hear the men I worked with say, "You'll never catch me in any office! I love being out here in the fresh air!" Frankly I thought they were nuts. This was about the moment in my life when I decided my future work environment was going to have full time A/C, a water cooler, a big comfy office chair, and unmonitored break times. My uncle did me a solid that summer, and that's what I'll try to for you now.

&amp;#x200B;

If your goal is a paying job in cybersecurity, here is your blueprint for the first two to three years. Advanced math and programming skills are definitely not needed, math was my worst subject in school by far. College degree also not needed, my best friend is literally a high school dropout and he makes $150K as an AWS cloud architect for NASA, no BS. Intelligence is also helpful but not absolutely critical, I worked at IBM for five years with a woman that could not have been more average in every way. The only thing she was exceptional at was taking notes, any time she or anyone else did something it went in her notebook. If she need an answer for a problem later, she'd look in the notebook. Advanced equipment is not necessary, a second hand laptop and cable modem speed internet connection should be more than sufficient. Frankly, the "what to do" is the easy part. Actually sacrificing hours a day to learn the skills and execute the career plan is the hard part. By far the most important trait is determination, just a refusal to give up. Remember, if it was easy, everyone would do it.

You should be aiming to eventually get a position as a Security Operations Center (SOC) analyst.

A SOC analyst position gives you some insight into a whole range of different information security problems and practices. You'll see incoming recon and attacks, your org's defenses and responses, and the attacker's counter responses. You'll get experience using a SIEM. You'll become familiar with all of the tools in place and start to figure out what works and what doesn't. You'll learn the workflow of a security team and what the more senior engineers do to protect the enterprise. After a couple of years, you'll probably have a much better idea about your own interests and the path you want to pursue in your career.

&amp;#x200B;

Here's how you get there:

&amp;#x200B;

Step 1: Get the Network+ certification (Skip the A+, it's a waste of time for your purposes). You MUST understand IPv4 networking inside and out, I can't stress that enough. A used Net+ study guide on Amazon should be less than $10. Professor Messer videos are great and free: https://www.youtube.com/user/professormesser

&amp;#x200B;

Mike Meyers has about the best all in one Network + book out right now, you can get that from Amazon. You can also check out Mike Meyers' channel on Youtube, he has a lot of Network+ videos: https://www.youtube.com/watch?v=TcIV\_qc-eOU

&amp;#x200B;

Step 2: Start learning some basic Linux. The majority of business computing is done on a unix type platform, this will not change anytime soon.

&amp;#x200B;

For Linux, I'd highly recommend "Unix and Linux System Administration Handbook" by Evi Nemeth, et al. The information is presented in a way that is comprehensible to regular people. You can get a used copy of the fourth edition for about $15.00. The second edition got me through my first three jobs back in the day :) https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/ref=sr_1_fkmrnull_1?keywords=evi+nemeth+4th+edition&amp;qid=1551450119&amp;s=gateway&amp;sr=8-1-fkmrnull

&amp;#x200B;

Step 3: Get a techie job, probably in entry level tech support or helpdesk. You have to do a year or two here to get some practical experience.

&amp;#x200B;

Step 4: Get the Security+ certification.

&amp;#x200B;

Step 5: While in your tech support job try to do every security related task you can.

&amp;#x200B;

Step 6: Attend Bsides conferences (very cheap), there is almost certainly one within a couple hours of you. http://www.securitybsides.com/w/page/12194156/FrontPage

&amp;#x200B;

Step 7: Join a local hackers group similar to NoVA Hackers or Dallas Hackers.

&amp;#x200B;

Step 8: Network with everyone you can at security conferences and in your hackers group.

&amp;#x200B;

Step 9: After you get those certs and some technical work experience, apply for every SOC position you can.

&amp;#x200B;

Step 10: Take the free online Splunk class while you're waiting.

&amp;#x200B;

Step 11: Keep going until you get that SOC analyst job.

&amp;#x200B;

Guess what, you're an infosec professional!

&amp;#x200B;

That SOC analyst job should pay between $50K and $60K. You'll stay there for a year to eighteen months and get a couple more certifications, then leave for a new job making $75K to $85K. After five years in the tech/cybersecurity industry you should be at $100K+.

&amp;#x200B;

Feel free to PM me with questions.

u/SofaAssassin · 1 pointr/cscareerquestions

What kind of jobs are you applying for? Low-level stuff is typically applicable for things like engine work, graphics, optimization, networking and audio. Okay, that covers a lot of the game development process, but there are certainly jobs that aren't deep into that, like peripheral tooling (making tools for developers to use) or working on stuff like the webservices that powers the online community.

However, if your goal really is core game development, then you need to be a lot more targeted in how you learn. I have interviewed for and was hired by a game company that worked in C++, and have also worked in distributed, networked military simulations (think of it like boring, more realistic Starcraft), so here is how I gained the various knowledge I had in getting through those types of interviews (including a 90-minute written test for the game company where I had to debug C++ code on paper, answer various gotchas, etc.).

I don't know how far you have covered, but this is how I would approach the learning now, were I to start over again.


  • Become really good at C++ - During my first job, I mostly used Java with Python/C++/Perl/TCL on the side. I learned a lot of C++ in short order to prepare for interviews and move jobs (to simulation).

  • Read Accelerated C++ and/or C++ Primer. These are probably the best books for getting introduced to C++ and starting off in a good place (as in, not learning C++ in the form of C), getting familiar with using the OO system of C++ and using the standard library. Also remember to do the exercises to really reinforce the concepts.

  • Read Effective C++ SUPER COLLECTION - In honesty, you can make do with just Effective C++, Volume 1, but these cover good practices for using C++.

  • Read the C++ FAQ - lots of gotchas there and corner cases of C++.

  • If you want to go beyond those books and resources, there are Herb Sutter's Exceptional C++ books.

  • Understand the machine - this covers the low level component. Helping you to understand the machine itself, how your code runs, how it's executed.
  • Read Randall Hyde's Write Great Code - This is one of my favorite technical books, and is language agnostic.

    It covers low-level concepts like CPU pipelining, memory, and how code interacts with the machine. I read this years after I started my job building simulations, and it reinforced a lot of what I learned previously and in college. I also recommended this book to a friend of mine who credits it with giving him an edge over his fellow college grads (he's years younger than I am) in low-level knowledge. If you don't know concepts like cache locality, cache lines and how memory is allocated, this book will cover that and more.

  • Read Randall Hyde's Art of Assembly Language - I have only briefly touched upon this book, but it takes a unique approach to introducing you to x86 ASM (by using a higher-level form of ASM).


  • Understand the algorithms and data structures - I took multiple classes in this in college, as well as periodically read CLRS to refresh my knowledge. But CLRS is too mathematically rigorous and theoretical here if you just want to get familiar with algorithms.

  • Skeina's Algorithm Design Manual is a more practical approach to refreshing yourself on algorithms and also learning complexity theory.

  • Skeina's Data Structures Lectures are helpful for data structures. In general, though, know these (I include whatever C++ has as well):
    • Dynamic array - std::vector&amp;lt;T&amp;gt; in C++.
    • Associative structures - std::map and std::unordered_map
    • Sets - std::set and std::unordered_set
    • Linked List - std::list&amp;lt;T&amp;gt; and std::forward_list&amp;lt;T&amp;gt;
    • Stacks and Queues - std::stack and std::queue
    • std::deque - The C++ implementation of a double-ended queue.
    • Trees - binary trees, red-black, heaps, tries (no standard C++ implementations of these, though stuff like std::set is typically implemented with a red-black tree behind the scenes)
    • Graphs

    • Understand the complexities of actions on each data structure (insertion, deletion, modification, searching, etc.)

  • Read the wiki on Pathfinding, because this class of algorithms is very important in game development, as well as network communication.

    -----

    The above covers the 'core' stuff you'd have to learn. If you wanted to get into stuff like network programming or graphics programming rather than just core gameplay development, I can expound further.
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/juggerthunk · 3 pointsr/learnprogramming

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

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

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

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

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

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

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

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

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

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

u/mdinger_ · 1 pointr/rust

Rust is currently premature but that is only temporary. You don't have to restrict yourself to only a single language. Try it and see how it goes. Rustbyexample and the guide set the barrier pretty low as far as trying things out (although, windows support may currently only be mediocre). Rustbyexample in particular because everything can be run in place (without downloading anything). Concepts in one language extend to others so learning one helps with others.

---
Some of the following comments about Rust may also extend to other language like python. For example, python has a well organized and seemingly comprehensive documentation set on their main site which is a huge help. Other (newer) languages may also.

If you intend to learn it using the internet only (without printed books) then C++ may not be a good choice (in my experience). This C++ tutorial is pretty good but it is extremely brief compared to a book like Accelerated C++ which is compact, detailed, and covers much more material than the tutorial will (it may be difficult for a beginner though).

Rust doesn't currently have the luxury of referring to good books for instruction. So best practices and coding conventions are being baked directly into the compiler/guidelines pages (currently WIP)/the guide. This is really convenient compared to C++ where resources are much more scattered (aside from books).

Inevitably, if you try writing something though in either language, you will get confused/perplexed by something regardless of the quality of documentation. In those cases, having IRC for help is incredibly helpful. They can save you hours upon hours of mystification. The Rust IRC is extremely extremely helpful in that regard.

Rust has cargo which makes testing new things incredibly easy. My experience with C++ is you find a new repository you want to test, you download it and spend the next 2 hours trying to get dependencies in order so you can compile it. With cargo, you often run this and you're done:

git clone site:repository
cargo build

The C++ compiler is notoriously unhelpful also which extremely confusing especially to a beginner. It is commonly the case that it finds some issue on line 12. When you eventually find the error, it's on line 20 (the compiler points you to the wrong location). What kind of issue could it be...maybe you forgot a semicolon. In general, the rust compiler is much more helpful with regard to error messages. If there is a confusing error message, the compiler team would like to make it better. If you're still confused, there is always IRC.

C++ has a lot of IDE support which is very helpful for advanced projects. Rust currently doesn't (Python doesn't seem to either). This will probably improve in the future. Also, IDE support often costs money depending on the language.

u/blackdragonwingz · 3 pointsr/tea

Hi there. I'm a professional web developer by trade. Your website looks like it's from the 1990's...I understand that both of you are working full-time, but I highly recommend completely re-doing your website.
I don't even know where to start, so I'm just going to give you examples, resources, and inspiration, and relevant comments.

Inspiration:

This is by far, THE best website for tea I've ever seen.

DavidsTea

  • It's responsive (try resizing the window from 100% to 1 inch - see how well it resizes?), looks modern, clean, fun, creative, and brands the tea/products very well.

  • Design is done by an award-winning designer from Holland, if I remember correctly.

    Mid-tiered websites:

    Harney&amp;Sons

  • Harney &amp; Sons appeals to a different demographic (yuppie-ish) whereas DavidsTea appeals to hipster younguns. Can you tell by the color scheme?
  • site isn't responsive and still needs some user interface work, but overall as basic as you can get.
  • Look at the way they market themselves and write descriptions. Look at the next few sites as well.

    Some more sites you can look at:

    Adagio Teas

    Mighty Leaf

    Verdant Tea

    Lower-tiered websites:

    TeaVivre

    Den's Tea

    Absolutely not:

    Upton Tea

  • I know Upton's is pretty popular here on reddit, but I think the website is just awful. I flat out refuse to buy on that site - it doesn't even look remotely reassuring to me to pay on that website. I'm sure it is secure, but....jesus, that user interface. Absolutely not.

    Resources:

  • Html and CSS by Jon Duckett

  • Javascript &amp; JQuery by Jon Duckett

  • UXPin Free Resources [there is a pdf book in this link that shows the latest trends in modern web design, take inspiration from there)

  • Do you use Firefox's Firebug tool? If you don't, just install Firebug on Firebox. Click on the bug icon, and then click on the inspector tool. Now you can hover over various elements and see what properties are being done on them if you need to figure out how something was done. You can also make changes without coding and refreshing your page each time.

    Let me know if you have any other questions, thanks!
u/Seventytvvo · 2 pointsr/personalfinance

Not that I know much about you, but from your post, it seems like your only option is to bootstrap yourself up the ladder. Given the constraints, you're going to have an uphill battle, but it can definitely be done. I'm not in the same situation as you, but I've been trying to teach myself coding on the side, and I'm starting to see a lot of progress! Admittedly, I went to school for electrical engineering, so I did have a class or two of exposure there, but I was far more interested in the hardware stuff.

Anyway, here's the approach I've been using so far:

  1. Codecademy - I've gone through all the HTML, CSS, and Python lessons. These are extremely valuable in getting a taste for coding; to see how things work in general, and to pick up a bit of syntax. However, these lessons won't necessarily teach you how to code. They're more like a first step. If being a programmer is like being a writer, then these codecademy lessons are like 1st grade grammar.

  2. Stackexchange aka: Learn what resources are available. - The biggest thing about coding is being resourceful. That's #1. Google everything. It's out there... Stackexchange is probably the best overall resource, but there is so much documentation out there it can actually be kind of overwhelming. It will take a while for you to sift through it all, but Rome wasn't built in a day...

  3. The Algorithm Design Manual, 2nd Ed is bad ass. It's really two books in one, though. The first being a basic computer science book, and the second being a quick reference guide to all the most popular and useful algorithms people use. I promise you, that if you learn what's in this book and can implement what it teaches you in code, someone will hire you.

  4. Project Euler - A really neat list of programming challenges, once you have a bit of a handle on a language of your choice. I actually just came across this, and I haven't tried it out yet, but I've looked through some of the challenges, and it seems like you'd gain quite a bit of experience by going through some of them (there's over 500 of them!)

  5. Keeping things in perspective - This is going to be a long, difficult thing if you don't have much technical background or haven't done any coding before. BUT... hundreds of thousands of people all across the world are following a very similar track right now. You're going to want to pull your hair out because of a bug you can't find, but then you're going to feel like superman once you fix it. You're going to doubt your code and doubt yourself, but then realize that you're making your computer do amazing things you had no idea how to do 4 months ago. And it's going to take time... if you want this to be your career, then treat it as such. There's a reason why getting a degree takes multiple years; there's a lot to learn, but you have a great advantage over the Starbucks-slurping "creative-type" at your local university... You're doing this because you want to; because it's a way out of the box you're in; because you can see the light at the end of the tunnel. Ultimately, you'll kick ass because you're doing it for yourself.


    Ha, sorry that got kind of pep-talk-ish, but I was getting excited. Anyway, maybe this will be of use to you!
u/random012345 · 1 pointr/learnprogramming

Books on project management, software development lifecycle, history of computing/programming, and other books on management/theory. It's hard to read about actual programming if you can't practice it.

Some of my favorites:

  • Code: The Hidden Language of Computer Hardware and Software - GREAT choice I notice you already have listed. Possibly one of my favorite, and this should be on everyone's reading list who is involved in IT somehow. It basically how computers and programming evolved and gets you in a great way of thinking.

  • The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography - Another great history book on code and how things came to be. It's more about crypto, but realistically computing's history is deeply rooted into security and crypto and ways to pass hidden messages.

  • Software Project Survival Guide - It's a project management book that specifically explains it in terms of software development.

  • The Art of Intrusion: The Real Stories Behind the Exploits of Hackers, Intruders and Deceivers - A fun collection of short hacking stories compiled and narrated by Kevin Mitnick, one of the most infamous hackers. Actually, any of Mitnick's books are great. Theres a story in there about a guy who was in jail and learned to hack while in there and get all kind of special privileges with his skills.

  • Beautiful Data: The Stories Behind Elegant Data Solutions - Most of the books in the "Beautiful" series are great and insightful. This is one of my more favorite ones.

  • A Guide to the Project Management Body of Knowledge: PMBOK(R) Guide - THE guide to project management from the group that certifies PMP... boring, dry, and great to help you get to sleep. But if you're committed enough, reading it inside and out can help you get a grasp or project management and potentially line you up to get certified (if you can get the sponsors and some experience to sit for the test). This is one of the only real certifications worth a damn, and it actually can be very valuable.

    You can't exactly learn to program without doing, but hopefully these books will give you good ideas on the theories and management to give you the best understanding when you get out. They should give you an approach many here don't have to realize that programming is just a tool to get to the end, and you can really know before you even touch any code how to best organize things.

    IF you have access to a computer and the internet, look into taking courses on Udacity, Coursera, and EDX. Don't go to or pay for any for-profit technical school no matter how enticing their marketing may tell you you'll be a CEO out of their program.
u/AccidentalBirth · 5 pointsr/breadboard

You can try /r/electronics, /r/askelectronics, /r/EngineeringStudents, /r/engineering and /r/arduino too, in case this doesn't receive much attention. This is a pretty small subreddit, with very few subscribers. You'll have much more luck in those subreddits (the first two are very good for these types of questions).

This book would be perfect for you. Heck, I'm in my fourth year of electrical engineering, and I love that book. I'm sure you can find a free version somewhere, but I won't link you to that. It truly is an exceptional book that really teaches you about these things. Highly recommended and well worth the money. You'll have to make some purchases before each chapter, nothing too expensive. Just stop wasting money on alcohol or drugs and spend it on something that will benefit you in the future, something more relevant to education haha.

Seriously, that book will explain to you like you're five. It is great. And if you have any questions about the contents of it, you can google it, ask someone on the subreddits, or PM me for information.

Mind if I ask where you live? And what inspires you to be an engineer? What are some of your favorite classes in school? Tell me more about you.

I must say, your approach is a very good one. I can already tell you're a highly motivated person. You have a good attitude.

Edit: Some people are suggesting you start with arduino. But I really recommend you start with reading, and the basic tools (breadboard, components, etc). Although arduino can be basic, it involves coding as well, something you're likely not familiar with. Just get the book, and I promise you'll be satisfied.

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/emporsteigend · 3 pointsr/compsci

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

u/TurkishSquirrel · 1 pointr/gamedev

First thing I noticed upon looking into your code, and I do apologize if it sounds a bit harsh, please forgive me: It's very disorganized, you have non-constant globals (nasty), and very sparse comments (not useful when trying to figure out code, try to at least have simple descriptions of what a function does), your map is hard coded in game (not bad for simple example, but try reading it from a file later on). I'm also curious why you're doing

struct inputstate curstate = {false, false, false, false, false, false, false};

within main, calling

inputstate curstate = //blah

should be sufficient. Calling struct will create a new structure, although maybe in this case it's making an inputstate. Either way, it's an odd line. Putting struct before inputstate is unnecessary.

I strongly suggest you learn more about C++ and Object Oriented programming, as it will solve these issues with organization and global variables you're having, if you use the ideas correctly. Since it seems like you do know some programming, I would suggest Accelerated C++.

Now, on to your questions:

&gt; Is there a problem with using an IDE?

No way, and don't let anyone tell you there is. Visual Studio is an insanely powerful IDE, and I use it myself and absolutely love it. If you're comfortable with VS there's no need to switch because people say it isn't 'proper'. However, learning to use a simple text editor, g++ on command line and makefiles will be valuable, even if only as a learning exercise. That is why you should try to learn it. I know both, but prefer working with VS, intellisense is too good to deny hahaha.

&gt; Do people only use vim/text/command line

It's personal preference really

&gt; How to generate make files

Cmake can do it, and you may be able to do with an extension from VS, but I'm not sure

&gt; Quickstart tutorial for vim/make

Look up the g++ compiler for linux (on windows minGW) and get vim running. Although I prefer Sublime Text 2 for text editing.

&gt; Advantages of VS

Tons, if you learn the IDE it is another very powerful tool. My personal favorite thing in VS is the fantastic code completion, I've not found anything on par with it from any other editor.

&gt; Can I do int a = b

Yes. I'm a bit confused with your wording though, if you're implying that a would equal b at all times, that is false. a = b at the time the expression is evaluated. If you want a to reference b you need a to be a pointer to b's address like so

int a = &amp;b

Then doing

a

Will return the value of b at the time you've called *a

&gt; Where can I get more help?

See the recommended book above, when you feel you've learned the concepts in there well, move on to a more advanced book listed on SO's C++ book list

I hope this covers your questions

u/evetsleep · 3 pointsr/PowerShell

Hey /u/Dude_with_the_pants! So this is a wall off text now that I've written it..sorry about that but honestly when I start talking PowerShell I can go on forever (as my peers at work can attest). So I hope this is kind of useful for you.

So you're looking for some real-world examples...so here goes from where I sit. I've been using PowerShell since it was in beta...so a long time. Prior to PowerShell I was a point-n-click guy. No scripting experience (beyond embarrassingly bad batch files). I'd open VB scripts and kind of zone out. PowerShell really opened a door for me. For the past 20 years I've been working for some really large companies (5,000 - 160,000) as an Exchange\AD guy with my current stint...about the last 13 years or so, I've worked for the same company. This has been an evolution of sorts, but ever since PowerShell v1.0 dropped in my lap during the Exchange 2007 beta I was hooked and started to automate and built tools.

This was a long time ago now, so my skills and uses have matured quite a bit (at least I'd like to think so). Looking through this thread you've already gotten a lot of really good responses. In terms of using PowerShell and where to start I like what others have said. When you reach for the mouse and start clicking on stuff to complete a task, note somewhere what that task was and then when you have down time, look up how to do it with PowerShell. Odds are really good, especially now, that there is a way to do it with PowerShell. If I may be so bold, but I'd recommend taking a look at Learn Windows PowerShell in a Month of Lunches. I recently did a manuscript review of it for the publisher which required me to slowly read through every single page. It's a good staring point and I highly recommend it.

That all said, daily PowerShell usage.. So I've spent the last decade automating and tool-making which my employer has really taking a liking to (not sure why, but I enjoy myself). Here are some examples of what I've done with PowerShell:

  • Designed a centrally managed PowerShell console that is extended by custom functions that various IT teams manage. When I user logs in to my custom PowerShell console it looks over what groups they're a member of and customizes they're PowerShell environment based off that. This includes loading custom modules, establishing remoting connections to Exchange\Skype, and so on. Currently used by ~100 or so IT folks. I built this, in my free time, about 6 years ago after I was tired of seeing everyone doing things differently (and inefficiently) and pointy-clicky on things when I knew I could make it faster for them.
  • When ever a user changes their password I have an hourly script which detects that change and notifies them via email as well as SMS that their password was changed and gives them some steps on what to do (such as change their password on their mobile devices and such).
  • Designed a PowerShell, PHP (for PowerShell backed web services), &amp; PSSQLite architecture (thanks /u/ramblingcookiemonste!) which I've used to link together separate Active Directory forests and track various acquisitions. Basically this system tracks groups (and their memberships), users, and computers as they are migrated from one forest into the other. We do a lot of ..ahem.. acquisitions so this is a HUGE time saver. For example, when the project manager for an acquisition needs an update on what percentage of an office has migrated to our forest instead of hounding me (or the tech lead who is running an acquisition) they can just view a few web pages to get the info they need. No more bugging me so I can get back to my code! Did this in my spare time so the PM's would leave me alone...and it worked...so much so they asked for an official framework which I'm working on still.
  • I have a suite of tools that I wrote which query Splunk's REST API to pull data out for various tasks. For example, not long ago I was asked to provide a detailed report on the exact last logon time for approximately 300 people...who were no longer in our AD. My Splunk module made quick work of that. Took me about 10 minutes to get that info for the auditors. In the old days this kind of request would make me cry.
  • A long time ago we used to have real pains over unused accounts (both users and computers). I wrote an automation process which completely automates the detection of stale\unused accounts and send them through a workflow that I designed so that they are first identified, their contacts notified (manager..if they're a user, or admin contact if they're a machine), then they are disabled, and then eventually deleted after further notifications. All automated so I (or my peers) need to worry about it.
  • We don't use Active Directory for DNS, and so I had to write a tool which interrogates our DNS system to pull out subnet info (new subnets, changes, and deletes) and then pass that into Active Directory. This also heavily uses PSSQLite...I might be a little obsessed with this little database technology. With this I don't need to worry about what subnets are (or are not) in AD and if they're associated with the right AD site. Quite a few teams are quite happy with my tool, in particular the software distribution team as they're tools can now properly work with clients and find them in the right AD site.
  • By far my more heavily used tool is a directory searching tool. See where I work we don't have just AD (~140 DC's I might add), but other LDAP based directories and we needed a tool that could search any of them. Instead of having 15 ways of getting at that data I have 1. A single module where I can pass in a few basic parameters and get my LDAP query back.

    For day-to-day stuff, not long ago I needed to query the Windows time configuration status of all our domain controllers. Using remoting this was trivial. If you had 2 DC's then I guess it isn't a big deal, but for us fanning out through remoting to audit this data is absolutely necessary. I find remoting is a quality of life kind of thing. Yes I could RDP into something, but 9/10 times it is way faster to just run

    Invoke-Command -ComputerName machineName -ScriptBlock {do something}

    So day-to-day, for what I do, I'm honestly writing tools or working in automation projects 90% of the time. I only get into the shell to do something if something is really broken and none of my automation tools have already handled it. Not everyone has that luxury (and it is btw). If I was you I'd look for every opportunity to learn how to do stuff with PowerShell. I think you'll find that in most cases it will free you up to do other things. It'll be awkward at first as you fumble around, but you'll soon find ways to speed things up.

    I wouldn't be too obsessed with just looking at remoting stuff. It's true that this does expose some of the power of ..well.. PowerShell, but there is sooo much more to it. Look for ways to improve your daily life. Jot down the stuff you do a lot (and repeatedly). Those are your prime targets. It could even be something as simple as processing your mail in the morning. If there are certain patterns you follow and do a lot of...you can absolutely hook in PowerShell into that too if writing Outlook rules won't do what you need (I've done this too).

    Good luck and happy shelling!
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/theevilsharpie · 8 pointsr/sysadmin

&gt; windows server/services?

Microsoft's TechNet and MSDN are Microsoft's main reference portals for operations and development, respectively.

For structured learning, Microsoft offers their MCSE Program. Each exam covers a specific topic, and there are learning objectives and links to reference material available. Microsoft Press will usually have a self-study guide available for each exam.

There's also the Microsoft Virtual Academy, but I've never used it and can't vouch for its quality. Of course, it's free, so....

&gt; linux server/common services? (Could be distro specific)

For professional use, the most commonly used Linux distributions are RHEL/CentOS and Ubuntu. (Debian is also popular, but it's close enough to Ubuntu that you can lump the two together.)

Both RHEL and CentOS have documentation available:
RHEL Documentation Page
Ubuntu Server Guide

RHEL's documentation is far more thorough and complete. However, Ubuntu has community support in the form of the Ubuntu Forums and Ask Ubuntu, and I've personally found it easier and faster to find specific information and solutions for Ubuntu.

For structured learning, Red Hat has a certification track available (which is obviously focused on Red Hat technologies), and LPI has a certification track that is more vendor-neutral. There are self-study books available for Red Hat's certifications, but they are all outdated for the current exams, and I don't recommend buying them until they're revised for RHEL 7.

For self-study, the closest thing to a Linux system administration bible that currently exists is the UNIX and Linux System Administration Handbook. However, it's a bit dated in certain respects.

Linux support and documentation, like its development, is spread out over the Internet. If you're looking for how to do something, usually the best place to start is Google. Searching for "[stuff] Ubuntu" or "[things] CentOS" will usually send you to the right place. Stack Exchange is also a pretty good resource:

  • Stack Overflow, for scripting and coding questions
  • Server Fault, for questions regarding system and network administration
  • UNIX and Linux, for questions about Linux in general

    &gt; Networking

    Networking education is split into two worlds: theoretical/academic computer networking, and practical, vendor-specific networking.

    For theoretical networking, your best bet is to pick up a textbook. We recently had a thread discussing recommendations.

    For practical, vendor-specific networking, the big player is Cisco. Cisco has a certification track available with course objective and reference materials. For self-study, anything written by Wendell Odom is gold; however, bear in mind that you really need a lab for self-study to be effective.

    Other companies, like Juniper or HP, also have networking certifications available, but I only recommend them as a supplement.

    Lastly, while I describe Cisco's training as "practical," that doesn't mean that the theoretical aspect of networking is unimportant for a professional. There is an industry-wide push toward software-defined networking, and if your SO wants to get in on that, she'll need to have a firm understanding of computer networking theory.

    &gt; NetSec

    Hardcore NetSec isn't really my field, but /r/netsec has a Getting Started Guide with some resources available.
u/Broseidon241 · 2 pointsr/datascience

I did this, but I came to data science in the final year of my PhD when I got a job at a startup. I started with R, then SQL, then Python. I currently work in data science, moving internal ML products into production settings. I also do research - and knowing how to conduct proper trials is great if the company you work for gives you freedom in how something you've built is rolled out. I can also blend my degree with ML, e.g. designing batteries of questions to identify 'good fit' candidates for a given role - I combine the battery results with future performance data and continually refine the question set / improve the model. As well, I'm a good fit for UX and dabble in that. The combo skillset will give you the ability to produce value in many different ways.

The things that helped me most were:

  • Early on, Programming for Everybody - very gentle intro, and well taught.

  • Andrew Ng's machine learning course.
  • SQLzoo.
  • The Introduction to Statistical Learning course and book then, later, The Elements of Statistical Learning.
  • Buying big fat books about the things I wanted to learn, and working through them (e.g., Probabilistic Graphical Models, Pattern Recognition).
  • Coding algorithms from scratch, starting with linear regression and working my way to DNNs and RNNs. Do it in R, then Python, then Scala if you're ambitious.
  • Doing the Kaggle intro competitions in R and then translating to Python - Titanic, census dataset, etc, and using a variety of approaches for each (i.e. xgboost, sklearn, tensorflow).

    It can be overwhelming, but don't worry. Do one course to completion, with that as your only goal. Then do the next. Then work on a kaggle thing. Then work through a book. One thing at a time - you might get anxious or be uncertain or want to do multiple things at once, but just start with one thing and focus on that and that alone. You'll get where you want to go.

    I also brushed up on my linear algebra / probability using MITs open courses and khanacademy.

    Beyond all this, I found that learning a lot about ML/AI really expanded my thinking about how human beings work and gave me a new and better lens through which to view behaviour and psych research/theories. Very much recommend to all psychologists.

    Good luck!
u/kandeel4411 · 1 pointr/cpp_questions

I know how you feel, my college was practically the same. Here are some resources that helped me through:

https://www.youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb

TheCherno has a really nice C++ tutorial. Might not be the best on modern standards, but if you are looking for a place to start, this is a good one, really explains stuff nicely.

&amp;#x200B;

https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784/ref=cm_cr_arp_d_product_sims?ie=UTF8

https://www.amazon.com/Primer-5th-Stanley-B-Lippman/dp/0321714113/ref=cm_cr_arp_d_product_top?ie=UTF8

These two so far is the most recommended books I could find in this thread, Programming Principles has more nice exercises and is what I personally used, but to be honest just go with the one that clicks for you. read through the preview chapters if you could find them and choose the one you like.

&amp;#x200B;

https://codeforces.com/

https://www.hackerrank.com/dashboard

https://www.codewars.com/

I think this is what helped me the most at the start if you don't know what to do, solving problems really helps you get comfortable with the basic language syntax, programming logic and is a lot of fun.



Lastly, Google search is your best friend, seize it. Don't be afraid of making a lot of mistakes because you are going to make many AND be willing to explore! Because chances are, there is always going to be a better modern way to do something. Try to know the advantages and disadvantages(Important) of each way if you could, it all may seem so cryptic at first and confusing(it probably is) but it will all click someday.

&amp;#x200B;

Learning C++/Programming is a life-time learning, Good luck on your journey!

u/Thought_Ninja · 5 pointsr/learnprogramming

If you want to dig deep into the theoretical of programming, and help build a good foundation for OOP, patterns, and algorithm design, check out Concrete Mathematics: A Foundation for Computer Science. It is honestly the best textbook I have ever come across.

From there, if you're feeling really ambitious in studying algorithms, check out The Art of Computer Programming, but I should warn you, it is very dense and can be hard to understand even for accomplished developers.

Beyond that, I suggest checking out The Odin Project. It covers a variety of languages and frameworks including Ruby On Rails, which is pretty standard in app development these days. They have a lot of great references and side material. It's basically a "go at your own pace" open source coding boot-camp.

&gt; Like I said, this is for me. I hate just being told "do this" and having no concept of why. I want to understand why I'm doing it, the implications for doing it "this way".

This... This is the mindset that will carry you and eventually make you stand out as an exceptional programmer. Learning how to do something might land you a job, but knowing how it works makes you an invaluable asset to any employer.

As long as you are passionate about learning the material, you will pick it up over time.

&gt;This is where I realized that I was doing this wrong, at least for me. I'd be on codeabbey and know what I wanted to do, but not how. I realized that I needed to be building larger things to be working with oop concepts. I really felt I was missing a lot of "base" information.

Awesome observation. Doing studying and doing drills both have an important role in the learning process, but there are other forms of practice to include in order to reinforce the material in a meaningful way. Ruby Rogues Podcast has a great group discussion about how to learn that I highly suggest you give a listen.

Personally, I learn best by throwing myself into a project where I am in wayyy over my head. By struggling through problems, scrupulously tearing through documentation and examples, I learn a lot more of the why than the how at the end of the day.

I learned Javascript, jQuery, and AJAX by building a templating &amp; ecommerce framework. I started out with little to no knowledge or understanding of how JS worked, and was forced to restart a number of times as I began to see what was good and what was not, but now I feel very comfortable working with it.

Find a problem, and solve it, because Computer Science is, really, just the art of problem solving.

Best of luck, and most importantly, have fun :D

u/xenvy04 · 2 pointsr/chemistry

I like this book for C++ if you want to learn C++. Python is easier though and most people start with Python. I like the book Learn Python the Hard Way (it's actually a pretty easy book lol) but there are quite a lot of books that are good for Python. (and I'm like 99% certain there are free versions of these books available on the web)

That's probably a good way to see if you like coding. Personally I love it 'cause it's a lot of problem solving, and then forcing a computer to do your evil bidding work.

Then for the chemistry part. I think everybody on the planet and their brother loves this book (it's also free on google). That will help you learn about the theory behind the software.

I also think you should talk to a professor who does computational work to let you toy around with it. I've had two advisors now in comp chem, and I get the feeling if a student came to either of them and said they wanted to play around with the software and see what comp chem is like, both of those professors would probably have been happy to set them up with an account to a supercomputer and show them a few tricks to setting up jobs, running simulations/calculations, viewing data, etc.

u/Jimbo_029 · 4 pointsr/ECE

Bishop's book Pattern Recognition and Machine Learning is pretty great IMHO, and is considered to be the Bible in ML - although, apparently, it is in competition with Murphy's book Machine Learning: A Probabilistic Approach. Murphy's book is also supposed to be a gentler intro. With an ECE background the math shouldn't be too difficult to get into in either of these books. Depending on your background (i.e. if you've done a bunch of information theory) you might also like MacKay's book Information Theory, Inference and Learning Algorithms. MacKay's book has a free digital version and MacKay's 16 part lecture series based on the books is also available online.

While those books are great, I wouldn't actually recommend just reading through them, but rather using them as references when trying to understand something in particular. I think you're better off watching some lectures to get your toes wet before jumping in the deep end with the books. MacKay's lectures (liked with the book) are great. As are Andrew Ng's that @CatZach mentioned. As @CatZach mentioned Deep Learning has had a big impact on CV so if you find that you need to go that route then you might also want to do Ng's DL course, though unlike the courses this one isn't free :(.

Finally, all of the above recommendations (with the exception of Ng's ML course) are pretty theory driven, so if you are more of a practical person, you might like Fast.AI's free deep learning courses which have very little theory but still manage to give a pretty good intuition for why and how things work! You probably don't need to bother with part 2 since it is more advanced stuff (and will be updated soon anyways so I would try wait for that if you do want to do it :))

Good luck! I am also happy to help with more specific questions!

u/ShadowWebDeveloper · 2 pointsr/cscareerquestions

Throwaway account because I'd rather not have my current coworkers knowing about this.

About a year ago, I heard about Google Foobar from an article on Hacker News. I had never seen that before but it sounded interesting, and I'd always wanted to work for Google (sent my resume some years ago, heard nothing). Long story short, I found a backdoor way into Foobar, and went through the coding challenges until I got past level 3, at which point they ask if you'd like a Google recruiter to contact you. I said yes and gave them my details.

Fast forward to about two months ago. I finally got an email from an internal Google recruiter asking to talk. I freak out a little bit and start madly researching what a first contact entails (as it turns out, just an informal phone call about your career and what you might want to do at Google). During my research I also looked into what the infamous Google technical interviews might look like, and discovered that I needed to brush up on my algorithms and data structures, and fast. I told the recruiter I needed two to three months to prep (this is apparently not too uncommon, thankfully). She said that when I was ready, I should send her my resume and the jobs I'm interested in (probably in the Pittsburgh office so we can stay close to my wife's family), and she'll get the ball rolling. She also mentioned that it's possible that I could skip the standard video tech screen (since they already had a coding sample in the form of my Foobar submissions) and proceed directly to the onsite interviews.

The thing is, I've been primarily doing PHP web development for ages. I've done a bunch of freelance work previously and I've been working for a great startup for the last few years after immigrating to the US from Canada in 2009. But as far as I know, Google doesn't do much / any PHP, and we all know the general opinion on the language. I have, thankfully, done many other languages throughout my career... Javascript (lots), Java (college / some Android development), C++ (in my college days), C (when I was first teaching myself to program in a real language). But my professional experience has been dominated by PHP.

As far as education goes, I have an associate's degree in programming and about two years of a CS program (interrupted to move to the US). I always thought Google had a hard Bachelor's requirement but that's apparently not the case (you just have to show that you have the aptitude, skills, and experience necessary).

My prep so far has been reading through The Algorithm Design Manual (at least the theory part of the book), and more recently, reading through Cracking The Coding Interview and doing the questions, on paper first, and then verifying on my laptop. I am doing these questions in Python, which was the language that I did Foobar in, and probably the language I will interview in. That said, I learned Python for the first time going through Foobar, so I'm far from an expert in the language. I'm doing this prep while managing my current full time job and caring for a four month old, which I wouldn't even come close to managing without my wife's amazing support.

Doing a search here, I found the MIT Hacking a Google Interview site which seems like a goldmine, and Pramp which also seems like a great resource once I'm done with CtCI. Considering Interview Cake but only if people think it's indispensable ($200).

I have about one month left in the original timeframe I gave the recruiter. I am incredibly excited by the prospect and also incredibly intimidated. Do you have any advice for me on how to maximize my chances?

Also, should I apply as a SWE or a SWE-Frontend? My full stack web development experience seems relevant to SWE-Frontend but I don't want to only end up doing frontend work and I don't want it to be career-limiting; I like the backend stuff as well, and I'm definitely not a designer.

Thanks!

Edit: For those looking for the Foobar backdoor, it no longer works. It was a crossword you could solve that randomly generated (easy) CS and crypto clues, and was accessible from an IP apparently found in promos for The Imitation Game, but the crossword entrance has since been shut down. However, I figured out why I couldn't get in through the main method (searching Java- or Python-related CS queries). You have to both be logged into Google, and, crucially, you have to have search history enabled. Once I reenabled search history, the Foobar break-in came right up after a couple Python searches.

u/anachronic · 3 pointsr/AskNetsec

&gt; I have zero Linux experience. How should I correct this deficiency?

First, install a VM (Oracle OpenBox is free) and download a linux ISO and boot from it. Debian and Ubuntu are two of my favorites. Both are totally free (as are most linux distros). Once installed, start reading some beginner linux tutorials online (or get "Linux In A Nutshell" by O'Reilly).


Just fuck around with it... if you screw something up, blow it away and reinstall (or restore from a previous image)

&gt; Is it necessary? Should I start trying to make Linux my primary OS instead of using windows, or should that come later?

It's not necessary, but will help you learn faster. A lot of security infrastructure runs on Linux and UNIX flavors. It's important to have at least a basic understanding of how a Linux POSIX system works.

&gt; If you can, what are some good books to try to find used or on PDF to learn about cissp and cisa? Should I be going after both? Which should I seek first?

You don't need to worry about taking &amp; passing them until you've been working in the field for at least 3-5 years, but if you can get some used review materials second-hand, it'll give you a rough idea what's out there in the security landscape and what a security professional is expected to know (generally)


CISSP - is more detailed and broader and is good if you're doing security work day-to-day (this is probably what you want)


CISA - is focused on auditing and IT governance and is good if you're an IT Auditor or working in compliance or something (probably not where you're headed)


&gt; What are good books I can use to learn about networking? If you noticed I ask for books a lot its because the only internet I have is when I connect my android to my laptop by pdanet, and service is sketchy at my apartment.

O'Reilly is a reliable publisher of quality tech books. An amazon search for "O'Reilly networking" pull up a bunch. Also, their "in a nutshell" series of books are great reference books for Windows, Linux, Networking, etc... You can probably find older/used copies online for a decent price (check ebay and half.com too)

&gt; How would you recommend learning about encryption? I just subscribed to /r/crypto so I can lurk there. Again, can you point me at some books?

Try "The Code Book" for a very accessible intro to crypto from ancient times thru today
http://www.amazon.com/The-Code-Book-Science-Cryptography/dp/0385495323


Also, for basics of computer architecture, read "CODE", which is absolutely excellent and shows how computers work from the ground up in VERY accessible writing.
http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319

u/shaggorama · 2 pointsr/math

Ok then, I'm going to assume that you're comfortable with linear algebra, basic probability/statistics and have some experience with optimization.

  • Check out Hastie, Tibshirani, &amp; Friedman - Elements of Statistical Learning (ESLII): it's basically the data science bible, and it's free to read online or download.
  • Andrew Gelman - Data Analysis Using Regression and Multilevel/Hierarchical Models has a narrower scope on GLMs and hierarchical models, but it does an amazing treatment and discusses model interpretation really well and also includes R and stan code examples (this book ain't free).
  • Max Kuhn - Applied Predictive Modeling is also supposed to be really good and should strike a middle ground between those two books: it will discuss a lot of different modeling techniques and also show you how to apply them in R (this book is essentially a companion book for the caret package in R, but is also supposed to be a great textbook for modeling in general).

    I'd start with one of those three books. If you're feeling really ambitious, pick up a copy of either:

  • Christopher Bishop - Pattern Recognition and Machine Learning - Bayes all the things.
  • Kevin Murphy - Machine Learning: A Probabilistic Perspective - Also fairly bayesian perspective, but that's the direction the industry is moving lately. This book has (basically) EVERYTHING.

    Or get both of those books. They're both amazing, but they're not particularly easy reads.

    If these book recommendations are a bit intense for you:

  • Pang Ning Tan - Introduction to Data Mining - This book is, as it's title suggests, a great and accessible introduction to data mining. The focus in this book is much less on constructing statistical models than it is on various classification and clustering techniques. Still a good book to get your feet wet. Not free
  • James, Witten, Hastie &amp; Tibshirani - Introduction to Statistical Learning - This book is supposed to be the more accessible version (i.e. less theoretical) version of ESLII. Comes with R code examples, also free.
    Additionally:

  • If you don't already know SQL, learn it.
  • If you don't already know python, R or SAS, learn one of those (I'd start with R or python). If you're proficient in some other programming language like java or C or fortran you'll probably be fine, but you'd find R/python in particular to be very useful.
u/phao · 1 pointr/cprogramming

Before anything, I want to ask if you're really going to work with C, whose support in visual studio is really poor, or if you're going to work with C++. My question is: are you sure you'll be working with C? Isn't it C++?

I've seen a lot of people say C when they mean C++. Given how bad is the C support in visual studio, I imagine this may be your case (i.e. someone told you that you'll be working with C programming using the Visual Studio IDE).

If this is really C, then I don't have much to give you, but if you'll be working with C++, then there are some to consider.

I know there are books targeted at teaching C++ together with the Visual Studio tooling. I don't know if they're any good though.

Microsoft has its channel9 website. It has several videos covering how to use Visual Studio and also several videos on C++. Here are some of their video series which seem good:

u/coniferhugger · 2 pointsr/linuxadmin

Instead of buying tons of books, you might want to look at Safari Books. I have the 10-book bookshelf subscription, and it is seriously plenty. Pros, you have instant access to a massive library of tech books. Cons, you are stuck reading on your computer/tablet/phone (I did try reading a few chapters on my Kindle, but the didn't care for the experience).

Books I would suggest:

  • UNIX and Linux System Administration Handbook - this is seriously a great book, that will make any admin better.
  • Time Management for Systems Administrators - has a lot of good tips for time management, but some things are a little dated.
  • The Practice of System and Network Administration, Second Edition - This is a great read on how to be a better system administrator.

    I'm not a huge fan of training videos, but generally watch recordings from conferences. Although, I do really enjoy the format of vimcasts though.

    As for general advise, I did see someone recommend looking for an MSP. If you are looking to be a Linux SysAdmin, I wouldn't recommend this route as you are going to be supporting MS installations. Personally, I started doing help desk for a web company and moved up from there. Also, I worked hard to create my opportunities within each position. You'll have to put yourself out there and be patient, It took me 4 years to earn the official title of Systems Administrator (in a small-ish town). The key to this is finding a good Sr. SysAdmins who are willing to mentor you, and some environments/people aren't conducive to this.

    EDIT:

    BTW, I have a B.A. in Political Science, so don't be ashamed to rock that Philosophy degree. You will see a lot of posting that are looking for a B.S. in Computer Science/Computer Engineering/Rocket Surgery, but seriously don't even worry about that. Most job postings are a list of nice to haves, and most places really only care that you have a degree.

    I've been recruited by and interviewed with some very respectable tech companies. I just usually have to explain how I got into tech with a political science degree. In an interview, having the right attitude and knowing your stuff should say more than your major in college. But, you will also run into elitist douche bags who knock your degree/doubt your abilities because you don't have a B.S. in CS/CE. If you work with these people, your work should speak for itself. Don't try and get caught up into a pissing match with them. If it is an interview (as in someone you might work for), practice interviewing never hurts.
u/TonySu · 1 pointr/learnprogramming

Probably start with Artificial Intelligence: a modern approach. This is the state of the art AI as of 2009, of course in AI years that's ancient history but it's background you must know if you're serious about AI.

Following on from that you have the very popular statistical techniques, you can read about these in Pattern Recognition and Machine Learning. These are a wide range of statistical models and algorithms that allow machines to infer, classify and predict. Another very important concept is Chapter 14 on combining models. IBM's Watson for example uses a complex network of "simple" models who combine their answers to form the final responses.

From all the techniques in the previous book, neural networks from Chapter 5 have become the most popular and powerful. These are covered in Deep Learning, and are currently the cutting edge of machine learning. They are extremely general models that seem to be highly successful at a range of tasks. In particular their popularity comes from their amazing accuracy in image recognition, which really challenged past algorithms.

Ultimately nothing you can learn from anyone is sure to bring you close to sci-fi AI. The techniques to produce such an AI eludes even the foremost experts. You may also become disillusioned with your dream as you realise just how mechanical and constrained AI is. I personally think we'd have better luck genetically engineering intelligence in a random animal/insect than creating true intelligence in silicon and circuits.

u/VerticalDepth · 1 pointr/learnprogramming

CompSci covers a wide range of subjects, many of which won't be that relevant to you. When I was at Uni my classes covered:

  • Algorithms
  • Functional Programming
  • Architecture and Design Patterns
  • Ethics, Professional Issues
  • Artificial Intelligence
  • Compilers and Programming Language Design
  • Data Structures
  • Database Systems
  • Networked Systems
  • Operating Systems
  • Discrete Mathematics
  • Low-Level Systems and Hardware

    This list isn't comprehensive, but covers most of the main points. For your job, you can happily ignore most of that core.

    I think you'll want to focus on with the highest priority:

  • Design Patterns (Book Suggestion)
  • Algorithms (Book Suggestion)

    Warning: Algorithms is a heavy and dry book. It might not be a good recommendation for a beginner to be honest.

    As you're interested in Data Science, you're already off to a good start with R and Matlab. Python is fine but has some issues that don't make it ideal for large-scale data processing. The good news is that once you've got the hang of Python, you can learn another language much easier. I think it's worth noting that R is quite obtuse in my experience, so if you get your head around that you're doing quite well.

    But I digress. You're also going to want to learn about data structures, networked systems and databases, especially if you want to work with "Big Data". I think thought that your best starting place here is learning how to code. With that under your belt along with your math degree, everything else should be easy enough to learn on a case-by-case basis.

    Source: Masters &amp; PhD in CompSci subjects. Good luck, and feel free to PM me if you're interested in a mentor for this. With a better understanding of your position, I could probably help pare down what you need to study to more specific subjects.

    PS: Assuming you're at Uni, your library should have both books I have suggested.
u/Zuslash · 5 pointsr/webdev

I found Lynda.com to be extremely dry and slow. To me it was the equivalent of those old school mandated educational movies you would watch in classrooms back in the 90s on your faux-wood tv. Take this opinion with a grain of salt though as it has been almost two years since I have looked at anything on Lynda, I hear it may be better today.

If you are looking for web development in particular I would suggest the following:

  • Codeademy - Free and very good at introducing basic web development skills.
  • Team Treehouse - Paid subscription but well worth it in my opinion as they will walk you through everything from the most basic HTML to building advanced JavaScript applications.
  • CodeSchool - CodeSchool tends to be more advanced and I would wait until you have a strong grasp on your HTML, CSS and JavaScript before investing in their coursework.

    In addition, StackOverflow; A general programming Q&amp;A website, has an answer to just about any programming issue you may be running into. If the answer is not already there, then chances are you will have one within 24hours.

    I began my pursuit into web development about 2 years ago. In that time I have gone through the resources listed above as well as the following books which have helped immensely:

  • HTML and CSS: Design and Build Websites - Ducketts whole series is extremely friendly to the new web developer and will help you build a solid foundation quite quickly.
  • JavaScript and JQuery: Interactive Front-End Web Development - Another Duckett book which was just released focusing primarily on JavaScript.
  • JavaScript: The Definitive Guide - A massive JavaScript reference. It has answers to just about everything.

    Some personal career history if you're interested:

    In the last two years I have gone from making 18k a year as a Technical Support Representative to 80k a year as a Front-End Engineer building JavaScript applications at a large FDIC Bank. It was only in the last two years that I really dug into Web Development (and programming for that matter) and I really can't see myself ever doing anything else for a living. The job requires an immense amount of learning (which I love) and will keep your mind sharp. I really do get a kick out of problem solving all day. Programming will require a major adjustment to the way you think. I can say that the way I work through problems now is completely different to the way I did before. I feel as if critical thinking has eluded me until the last two years and it has been a major life changing event. By far the biggest contributing factor to my growth has been the team I work with. You have to do your best to find a team that is willing to work with you as a junior so you can siphon that knowledge. Even if that means taking a low paying job, however; know your worth so that you can ask for the right amount of money once you have gained the necessary skills. As a personal rule of thumb, I will not stay at a company where I am the most knowledgable member of the team. This inhibits growth as a developer and will prevent me from realizing my true potential.

    Feel free to hit me up if you have any questions.


u/drstranglove · 7 pointsr/AskNetsec

Servers should always be hardened and because everyone likes long guides the National Vulnerability Database actually maintains a lot of information regarding hardening servers. So for the actual server itself can be hardened using the following guide located here. That is for Red Hat Enterprise Linux 5. It will change from distro to distro, but some things are pretty standard. I agree with PalermoJohn as well that learning more about networking will certainly help you in securing your server and network.

For applications running on your web server the link for OWASP Top 10 that Rsaesha posted will help you. If you have more time and would like to learn about Application Security, The Web Application Hacker's Handbook is a great resource to learn a lot about security in Web Applications.

Both application and network level security are required to truly secure your web server.

Cheers!

u/coffeeUp · 1 pointr/cscareerquestions

Depending on the company and organization you're a part of, the SDET role can sometimes be flexible enough to begin blending into DevOps (Infrastructure) or Tooling territory.


I'm an SDET myself and I imagine I'll eventually find my way to a DevOps/SWE/SDE/Infosec type role myself. But in the meantime, I enjoy what I do. A friend of mine was an SDET and was able to demonstrate his SDE-specific skills and land a full time SDE role with a Big 4 company. So definitely possible, just make sure you're strong on coding and algorithmic understanding / problem solving.


I do have some specific feedback to assist with your goals though:


&gt; Some other interests of mine that I don't get to really work with are linux administration, front-end web development, data analyst/sql stuff, and information security.


Some of these can be incorporated into your work depending on your role:


  • Front-end web dev: Build out some internal tools to assist with different QA or Test specific tasks (or take existing test tools or scripts) and put them into a React or Angular app. Lets you build out something interesting while still being related to your role and work responsibilities.


  • Data Analyst/SQL stuff: Build out some dashboards or other reports to show QA or Test coverage, better aggregate test records over time (how often has this test passed or failed historically, etc). Will provide value to others and help with oversight/insight into test - best to work with potential stakeholders (Managers, Directors) who may be interested in this data after you have a basic proof of concept, see if they can support (or would like) this data.


  • Information security: Start reading up on some resources to support your testing of potentially vulnerable systems or web apps that you support (ie, read up on https://www.amazon.com/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470 if you test web applications). Obviously this type of testing would be best carried out in a sandbox test environment, to give you better logs and if you discover something impactful it is contained to a test machine you can just rebuild if it breaks.


    Hope this helps and good luck!
u/last_useful_man · 2 pointsr/learnprogramming

I have to say linux profiling has seemed to me to be a fast-moving target, meaning you'll get scattered results if you search. But, there's this which seems up-to-date: http://en.wikipedia.org/wiki/Perf_%28Linux%29

Then there's Ulrich Drepper's 'What every programmer should know about memory' (long series, but worth skimming at least, if your code is memory intensive. At least read about cache-coherency and cache-lines): http://lwn.net/Articles/250967

But the biggest thing is to get the algorithms right. Sounds like you want image-processing books. Also, GPUs are just absolutely the right place to do this stuff, and there are probably libraries already out there for it; speaking of which, did you know about OpenCV? It even has some stuff implemented on the GPU (as CUDA). I root for OpenCL, but the fact is, almost everything out there, libraries, and books, is written for CUDA.

&gt; All the software is written in C++: I am interested in unlearning bad habits and writing better and easier to maintain code.

I suggest Effective C++ if you haven't read it yet. Also, Herb Sutter's 'Exceptional C++' series (a 'digest' version is C++ Coding Standards: 101 Rules, Guidelines, and Best Practices).

Never read it myself, but I hear 'Code Complete' is good. Maybe, too, Martin Fowler's Refactoring book - it shows lots of little awkward, problematic patterns and what to do about them, with good discussion. Each cleanly separated out - it will refer back and forth, but you can read the bits one-at-a-time. Good bathroom reading :)

Re: algorithms: Ugh, I don't know. It sounds like you'll want some metric data structures, dealing with space as you do. There's http://www.amazon.com/Foundations-Multidimensional-Structures-Kaufmann-Computer/dp/0123694469, and I don't know what else, maybe some Knuth? But probably, you should learn undergraduate-level data structures and algorithms, Big O stuff. Any used CS Data Structures + Algorithms book should help with that.

Do not fear spending money, as a former boss said, "books are free" ie they pay for themselves if they save you an hour's debugging later. Good luck!

u/frontendben · 7 pointsr/Wordpress

First off, I'd be careful of describing yourself as a WordPress developer if your knowledge doesn't really go past using the loop as far as PHP and WordPress goes. Not because I'm one of these 'you're not a developer' types, but because it could land you in legal hot water because of misrepresentation when it comes to clients.

Anyway, what I would currently describe you being – based on what you've said – is a junior front end developer. You have a good understanding of HTML and CSS, and a you know how to get JS working – even if it is just copy and pasting.

Personally, I would recommend signing up to somewhere like Treehouse as they have a great deal of structured content around WordPress that will take you from the basics of PHP and how they relate to WordPress upto more advanced topics like dealing with WordPress' APIs.

As for the most important skill? I would say that is having a good understanding of how PHP and JS work. Once you understand functions, variables, methods – and to a lesser extent, classes – you'll have a pretty good grasp of how anything works within JS and PHP.

I would then recommend spending some time reading PHP's docs, which are very well written and give examples of how those functions work.

If you're more of the read-a-book kind of guy, I highly recommend JavaScript and jQuery by Jon Duckett (Amazon link).

Hope that helps.

u/Versaiteis · 7 pointsr/ProgrammerHumor

Along with the advice from /u/perpetualwalnut the book "The C++ Programming Language" by Bjarne Stroustrup (the language creator). It's limited in being C++11 (we've had 14 as a minor update and now we're approaching the major update of 17) but it's a pretty solid reference for a large portion of the language (&gt;1,000 pages). (Edit:)It's not a book that will teach you C++ directly, but it's a good reference and is pretty extensive while providing motivation and examples of the language features.

For free sources I suggest cppreference.com as a great online reference.

For videos this should give you a good idea of some language semantics that you may or may not be aware of (again by Bjarne).

This video by Sean Parent (former senior programmer/architect, I'm not sure which, of Adobe and worked directly on Photoshop) is a neat intro to how neat using STL can be.

And finally it may also be worth checking out r/cpp for C++ related stuff, they post good articles/videos relevant to the language from time to time.

Sorry for the info dump, this is just all stuff I would have loved to have when I started. C++ is a monolithic language, but you can do some pretty neat/fast things with it.

u/mysticreddit · 6 pointsr/gamedev

The correct answer to:

Q. Should I learn C or C++ first?

Is:

A. Yes.

WARNING: Highly Opinionated Analysis of C vs C++


I see a lot of people recommending one way but no one offering an analysis of BOTH the Pro's &amp; Con's.

I've been using C++ since ~1990. I've briefly worked on a PS3 C++ compiler when I worked for Sony. I've seen 2 major problems over the years with C++ programmers:

1. People don't exercise discipline and restraint in K.I.S.S.

They use (and abuse) every language feature because they can. There is this tendency to over-engineer even the simplest things. Take a look at this complete clusterfuck of CRC in the Boost library.

1109 lines of over-engineered C++ crap for a simple CRC32 function instead of a mere 25 lines of code!?!?! The C version would:

  • do the same thing,
  • be simpler to write, and
  • be simpler to debug, and
  • more importantly solve the problem at hand, not abstracted to the point of being over-engineered.

    The trade-off would be is that it is less flexible, but WHEN was the last time you needed to use a custom CRC polynomial!?!? One would instead use a different algorithm such as MD5, SHA, etc. that:

  • has better better error-rate detection,
  • less collisions,
  • is multi-core.

    This excellent SO on hashing is but one example of focusing on the big picture.

    2. People lack a basic understanding of the cost let alone the implementation of C++ expressions.

    I've seen people stick a virtual function inside an inner loop and wonder why their performance is crap. I've seen people fail to grasp a basic understanding of pointers. I've seen people not understand memory management and how to guarantee zero memory leaks. I've seen people spend more time on writing an "über" template and waste hours debugging that instead of just writing something in 1/10 of the time and move on.

    IMO, due to the bloated, over-excessive verbose nature of C++ it is for these reason that I strongly recommend a beginner learn C first and then learn C++. You'll have a better understanding of why C++ is designed the way it is, what the design trade-offs are/were, what C++ hacks are, and how to best use the languages to their potential.

    However, this is ignoring the benefits and disadvantages of the Pro's/Con's of why one would learn C++ or C first.

    Learn C++ first


  • C++ Pro
  • C++ really is a better C then C in so many ways, too numerous to enumerate
  • In the ways it is worse the smart people / companies use a sub-set of the language: Ubisoft avoid Templates, Exception Handling, and Run-Time Type Identification. When even a C++ committee member admits he writes in a sub-set of C++ himself you know the language is b-l-o-a-t-e-d.
  • You won't have to unlearn certain "bad habits" of C
  • Your skills will up-to-date
  • Your code will be textually smaller (See note about Con)
  • Job Security -- that is half joking, half serious. Seriously.
  • You can enjoy the time exploring the different nooks and crannies of the language. You will see a different way to solve the same old problems. This can be both good and bad.
  • Eventually you'll be able to enjoy deep technical C++ comedy such as Hitler on C++
  • OOP (Object Orientated Programming) makes it almost easy to quickly write bigger scale programs
  • Is multi-paradigm: Procedural, OOP, Functional, Generic. You have the freedom to pick and choose the parts of the language that fits your needs.
  • For every problem you're trying to solve there is probably language support. Threads, and Atomics are finally part of the language.

  • C++ Con
  • You won't understand some of the C idioms used in practice
  • The language is HUGE -- it will take you a decade to properly learn the language
  • Debugging C++ is a PITA
  • While people write crap code in any language, it is harder to read bad C++ code then C code.
  • Compiler Support for the latest standards is a constantly moving target. Translation: Microsoft's Visual C++ has traditionally had crap support for the latest C and C++ standards. The good news is that MSVC 2015 finally supports a nice section of the language.
  • While C++ can be textually smaller, one's code can easily be "bloated" if not careful (such as templates and partial template specialization)
  • You really won't understand the run-time costs, nor be motivated to understand the underlying assembly language generated, by a "simple" C++ expression.
  • Expect L-O-N-G compile times for any significant code base unless you use a "Bulk / Unity" build (you compile one .cpp file that includes EVERYTHING)
  • It will be hard to resist over-engineering, over-complicating even the most basic tasks
  • iostreams is a complete clusterfuck. Even the C++ committee recognizes there are many problems with C++ iostreams but sadly nothing is being done towards performance at the cost of type safety.
  • It is far easier to blow your cache. Even Bjarne Stroustrup, the language designer, until 2012 didn't have a clue in understanding why Doubly Linked Lists were so slow compared to Arrays. HINT: The L1 Cache usage is critical for performance sensitive code.
  • People tend to over-use the OOP paradigm even when they shouldn't. People make dogma and religion of "Design Patterns", failing to think if the model applies or not.
  • The OOP paradigm is slow and bloated compared to Data-Orientated-Design. See Sony's Pitfalls of Object Orientated Programming
  • Reflection STILL isn't standardized -- everyone has their own "home grown" approach. Maybe in C++17 ?


    Learn C first


  • C Pro
  • The language is tiny and easy to learn. Learn C the Hard Way is a great tutorial.
  • No operator overloading
  • No function overloading
  • No lambas
  • Has no reflection
  • Has no exceptions
  • Has no RTTI (Run-Time Type Identification)
  • Has no STL (Standard Template Library)
  • You will have a better understanding of the run-time "cost" or performance of code instead of a single line hiding "hidden" behaviour.
  • You'll be a better programmer for understanding more of the lower-level implementation. If you don't know how to write itoa() or atoi() you're a noob programmer.
  • You'll be forced to keep things simple
  • You'll understand how to implement OOP in a non-OOP-native language, and better appreciate C++'s syntax sugar of OOP.
  • You'll appreciate how C++ templates solve some but not all "textual replacement" problems and why #define macro's suck for debugging.
  • Is ubiquitous, runs everywhere, and easy to get a C compiler for everything under the sun. Matz's Ruby Interpreter (MRI) was written in C, the Java VM was originally implemented in C, Perl is implemented in C, Linux is written in C. Anything popular and older then 10 years was probably written in C.
  • Variables must be placed at top of a brace {

  • C Con
  • Compared to C++, you'll hate how primitive the language is such as typedefs for structs, no local functions, const is only "half" useful in C -- it can't be used in array declarations (See: http://stackoverflow.com/questions/5248571/is-there-const-in-c ), etc.
  • No operator overloading
  • No function overloading
  • No lambas
  • Has no reflection
  • Has no exceptions
  • Has no RTTI (Run-Time Type Identification)
  • Has no STL (Standard Template Library)
  • Simple algorithms can be tedious to write
  • Variables must be placed at top of a brace {

    With that said there are numerous C++ books I would recommend to ALL C++ programmers. They are sorted from beginner to expert:

  • The Design and Evolution of C++, Bjarne Stroustrup -- another ancient but fundamental to understanding all the kludges in C++
  • The C++ Programming Language, 4th Edition &lt;-- "Mandatory"
  • ALL the books by Scott Meyer
  • Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
  • Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)
  • Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library -- ancient but good
  • Modern C++ Design: Generic Programming and Design Patterns Applied by Andrei Alexandrescu -- another ancient but it blew the doors open for C++ Meta-Programming. IT is interesting that he hates C++ -- he now works on the D language.

    If you can get only one book, get the The C++ Programming Language.

    Even though Bruce's book is ancient he keeps it simple and is a fun easy read. Remember this is before C++98 where the language is much simpler.

  • Thinking in C++, Bruce Eckel

    You can find it online for free

    Lastly, just because you can, doesn't imply you should. Use balanced C++ and you'll be fine.
u/cheezuscruzt · 11 pointsr/CompTIA

&amp;nbsp; Hello /u/rennypenn,

&amp;nbsp;

I was in the exact same situation as you until just a few months ago. I was in customer service for over 10 years but technology was always my passion and I deeply wanted a career in the industry. Unfortunately, I did not complete a college degree and thought a career in IT would never be possible for myself. Then I was introduced to the world of certifications which made my dream into a reality and was able to land a help desk tech position.

&amp;nbsp;

Some people will tell you certifications are not very helpful and will not benefit you much. I've come to realize that people who say this usually do not have any certifications themselves so they've never personally benefited from them and assume certifications to be useless. Do not listen to them, certifications will help show potential employers that you have the fundamental knowledge to do entry-level IT work.

&amp;nbsp;

The following resources will make you more than ready for these exams.

&amp;nbsp;
Professor Messer video course and study groups

&amp;nbsp;
Professor Messer course notes and practice test

&amp;nbsp;
Mike Meyers All-in-One book

&amp;nbsp;
Mike Meyers 901 and 902 course on udemy

&amp;nbsp;
• CompTIA 901 and 902 objectives.

&amp;nbsp;
Exam Compass

&amp;nbsp;
Crucial Exams

&amp;nbsp;

After completing the exams and receiving your certification you should immediately begin a resume and work daily to perfect it. If you are not too comfortable with writing a resume you can visit IT staffing companies like TEKSystems who will give you free resume and interview coaching along with helping you get employment.

&amp;nbsp;

When you get a resume you are happy with, begin sending it to every IT job opening in your area listed on Indeed, Career Builder, Monster, and listings to jobs under the local Gigs&gt;Computers section of Craigslist.

&amp;nbsp;

Apply for any IT position you see and keep in mind that 99% of job postings, even entry-level, will "require" a Bachelors degree, A+, Network+, Security+, ITIL, CCNA, and 5+ years of experience, and much more. Apply to these positions anyway. This is just wishful thinking of the recruiting team. If you apply to enough positions someone will eventually call you for an interview. Even if you really are under qualified for the position you applied to they may have an additional entry level opening that is just not posted yet and still call you. I applied to well over 150 jobs over a 5 week period and finally landed an interview and got the job as a help desk tech, but the job I initially applied was several levels above help desk.

&amp;nbsp;

If I can do it, anyone can. Just don't get discouraged and don't give up. Eventually someone will give you a chance and you will get your foot in the door. Good luck to you.

u/EraZ3712 · 12 pointsr/cpp_questions

Books are still the best way to learn C++! C++ Primer, 5th Ed. covers all the basics of C++11 from functions and standard library usage to OOP and templates. Effective C++ reinforces good practices and idiomatic C++ that, despite being written for C++98, is just as relevent today as it was then, some of its contents even more so than ever before. Then Effective Modern C++ then does the same for C++11 and C++14 features, building on top of what C++ Primer covers about C++11 and introducing the subtle changes brought about by C++14. This is my primary recommendation for learning modern C++ from the ground up.

But we live in the internet age! Best make use of it! So many wonderful talks from conferences such as CppCon, C++Now, Meeting C++, ACCU and Code::Dive are all available for public viewing. With regards to modern C++, Herb Sutter's CppCon 2014 Back to the Basics! Essentials of Modern C++ Style and CppCon 2016 Leak-Freedom in C++... By Default are great videos to watch. For more specific topics, here is a list of videos that I've seen and personally found engaging, educational, and worth my time to watch (multiple times!):

  • The Exception Situation for exception handling,
  • rand() Considered Harmful and What C++ Programmers Need to Know about Header &amp;lt;random&amp;gt; for random number generation,
  • Everything You Ever Wanted to Know About Move Semantic (and then some) for move semantics (by one of the authors of the proposal that introduced it!),
  • Modern Template Metaprogramming: A Compendium for template metaprogramming,
  • Lambdas from First Principles: A Whirlwind Tour of C++ for lambda expressions (this one is very good!), and
  • Type Deduction and Why You Care for auto and decltype(auto) (I miss Scott :'( ).

    There are also shows such as CppChat and CppCast where interesting events, projects, papers, and people related to C++ are brought up and discussed. There are so many interesting blogs to read!

    And there is always people on IRC (##c++, ##c++-basic, and ##c++-general) and the Cpplang Slack Channel for live updates, discussions, debates, questions, answers, and/or just plain fun with a group of people that ranges from complete noobs who are learning the basics, to committee members and library authors whose names are known across the community. If you ever have a question or need help, these are the places to go and ask (/r/cpp_questions is nice too! :P ).

    And finally, links to videos, blog posts, articles, papers, interesting Stack Overflow questions, almost everything mentioned above is constantly being shared at isocpp.org and on /r/cpp. Subscribe to both to get a constant stream of links to anything and everything about C++.

    Edit: as for C++17 material, the standard is not technically completed/published yet, but that hasn't stopped the community from creating material about it! This paper lists all the changes from C++14 to C++17, with links to relevant papers, and this Git repo provides a simple "then, and now" comparisons of the major changes to the language. Talks describing the changes in breadth and in depth have been given at conferences, and blog posts have been written for a more textual description of the changes. C++17 is not a major update like C++11 was to C++98, but full of fixes, conveniences, more language flexibility and utility, and new toys to play with! If you have a solid foundation in C++11, C++14 and in turn C++17 should be relatively easy to pick up compared to the shift from classic (C++98) to modern C++.

    TL;DR Learn C++11 the best you can. Once you are comfortable with C++11, the transition to C++14 will feel natural, and C++17 will be waiting just around the corner.
u/ThereKanBOnly1 · 35 pointsr/dotnet

Literally every part about this sounds like an up hill battle. Frankly, no matter what the course of action, a year isn't going to be enough. You've got to start tempering expectations with that now.

The challenge here is rewriting all that Web Forms logic, and this is the piece that is the biggest hurdle. I assume, that since you are working with web forms you don't have any test suite in place, so you're basically walking a tightrope without a net. I also assume that the actual business logic of the application is probably closely intertwined with web forms as well (which I'm assuming because that's how its been nearly every web forms app I've worked with).

Before you start wondering with MVC is the right fit for you, you've got to prepare your code base from moving out of Web Forms. You should pick up Refactoring by Martin Fowler. And begin to move as much code as you can out of code behind files, and into pure C# classes that you can test. Interfaces are your friend. Facades and Adapters are your friend. Unit tests are your friend. You need to have your business logic as portable as possible in order to move away from Web Forms and not be constantly chasing down bugs and unexpected functionality. The more your code-behind is a facade that just takes inputs and calls other classes with them, the better off you'll be

With that out of the way, now we can get in the framework discussion. First off, I don't think a SPA is a good approach here. It'll be too heavy of a lift for your team, and probably not worth the time and effort at this point in time. So you're pretty much left with MVC as an architecture, which is fine, but I think you're going to have some issues with "vanilla" MVC considering the load and the users you're going to have to service, so you're going to have to look beyond that to make this work.

One of the key components to scaling this will be a good cache. If every read needs to hit the database, then you're done. I would recommend using Redis for caching, but an in-memory cache will help you here as well.

I would also strongly recommend looking into CQRS. That stands for Command Query Responsibility Segregation. The high level idea is that requests that need to modify data gets handled by different classes than reading data. This makes it much easier to scale up/out the read side, and also makes it much easier to know when the cache on the write side can be invalidated (since that's coming from the read side).

The challenge with ramping up on CQRS is that its generally presented with a lot of other solutions; MongoDb/Document databases, Event Sourcing, event messaging. Those are good and interesting in their own right, but they are way more than you need right now and CQRS does not require using them.

The last thing I'll touch on here is that if you've got one big ball of mud, you're path to upgrading this going to be very tough. If you can find isolated parts of the application to split off, and test in a different framework, then you'll be much better off. The more isolated sales is from inventory (or whatever you have) the better off you're going to be in the long run. If you can find the time to isolate those components in the application now, rather than try and rewrite the big ball of mud, your future self will thank you.

u/FooBarBazQ · 2 pointsr/learnjavascript

I've heard great things about Jon Duckett's JavaScript and jQuery - Interactive Front-End Development. Apparently the book's binding completely blows (pages falling out even with very little wear and tear), but the content is supposed to be really great for people just getting started with JavaScript and struggling with some of the core concepts. This book is made for visual learners, who get more out of diagrams, analogies, and examples than from reading long, tedious blocks of text.

In other words, this book seems to be great for JavaScript novices (and programming novices) who just want to jump in, learn some basic concepts from a well designed and easy to read book, and start actually working with some JavaScript in the browser. From the book's Amazon page, each chapter is described as follows:

  • Breaks subjects down into bite-sized chunks with a new topic on each page

  • Contains clear descriptions of syntax, each one demonstrated with inspiring code samples

  • Uses diagrams and photography to explain complex concepts in a visual way

    Once you're a bit more comfortable, the go-to book for beginner to intermediate JavaScript learners is Nicholas Zakas's Professional JavaScript for Web Developers. It's a much thicker tome, but covers more concepts in more depth.

    This book is much more than just "pure JavaScript outside of the browser" (it also contains lots of info/examples for doing real things in the browser), but it does go into great detail about all the intricacies, syntactical oddities, and gotchas of ECMAScript, which you do really need to learn to become a fully competent JavaScript developer. This book is also written well and is easy to read, but it's not designed/presented as nicely or simply as Duckett's book. The Amazon page says the book is written for the following three groups of developers:

  • Experienced object-oriented programming developers looking to learn JavaScript as it relates to traditional OO languages such as Java and C++

  • Web application developers attempting to enhance site usability

  • Novice JavaScript developers
u/HPCer · 1 pointr/cpp

When I started, the most memorable three resources I know I had were the following:

  • Bjarne's book - I don't think any C++ developer can truly call themselves even intermediate until they have absorbed at least half the content in the book. I started off with his 3rd edition, which is way less intimidating and shorter, but I subsequently ran through this entire book after it came out. There are no shortcuts on here - you need to read it.
  • Effective C++ 3rd Edition - I would almost require this one as it prevents any new C++ developer from getting caught in C++ gotchas. You should ideally follow this book up with his 4th edition afterwords. The reason why I recommended the 3rd first is because that book is much more newbie friendly. The 4th edition is targeted towards experienced C++ developers that already have had their feet wet with C++11/14 and want to figure out some best practices. Note the 3rd edition is for C++98 while the 4th is for C++11/14.

    After you're done with the two above required books, here are some useful readings:

  • What Every Programmer Should Know About Memory - This is an absolutely essential reading whether or not you've taken any systems courses. It's the foundation of what you will be programming towards (optimizing CPU cache usage).
  • 1024cores - I believe this guy works/worked at Google at one point, but his site is essential to understanding multi-threaded programming (which is essential in the field). Browse through his site and learn what you can.
  • Linux Kernel Development - Robert Love (who also works at Google) has probably written the most concise and understandable book on the Linux kernel I've ever read, and I've run through the Daniel Bovet's book and Michael Kirrisk's. For one thing, they're 1,000 and 1,500+ pages, respectively. Secondly, all I've found in those two books that I didn't find in Robert Love's is the implementation details in some areas as well as the details on the scheduler. Robert Love's incredible descriptions on the bottom-half/tasklets were already more than effective for normal understanding. I believe the latter books were more detailed in the networking areas as well, but in that case, you're better off with Understanding Linux Network Internals.

    The above readings will probably be a solid 6-12 months to read and absorb assuming you spend a couple hours a day, but I think it'll be well worth it in the long run since this type of stuff sticks with you for a long time. I read the above around 2013, and I can still talk about the CFS/other schedulers, software interrupts, and how the CPU cache works. It'll also make converting to other languages even more of a breeze because you'll know how everything works underneath the hood.
u/VikingCoder · 1 pointr/gamedev

I think others have said what needed to be said, but I'll throw out one more piece of advice:

Get a teddy bear.

No, wait - hear me out!

A lot of people advocate code reviews with other developers, to keep themselves honest. When you're about done adding a feature to your project, you should review the code with another developer. After going through this a few times, many developers learn to clean their code a bit, before letting another developer see it. How you solve it, isn't how you should leave it.

Well, it turns out that this mental act of getting ready for a code review is where you get a lot of the benefit of code reviews. Meaning, for a lot of the value of code reviews, you don't even need the expense of a code review! Just the act of preparing for one, makes your code better.

So, I've heard of getting a code review teddy bear.

When you think you're about done, adding some new feature to your code, get ready to code review it with your teddy bear.

And then you have to explain all of your changes and new code to the teddy bear, aloud. Use English, and tell it what each line of code does.

And then don't add comments to explain the tricky bits! Rewrite your code so that the tricky bits are readable. And if you can't rewrite it so that it's readable, then encapsulate those tricky bits inside methods with simple names, simple parameters, and no access to global variables.

GOOD LUCK, AND KEEP TO IT! It'll make you a better software professional in your main career! Tinkering is good! Don't get frustrated!

Maybe try reading "Refactoring"

http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672

Just to get the mental wheels turning.

And maybe try: "Working Effectively With Legacy Code" to inspire yourself...

u/DeathByIcee · 5 pointsr/androiddev

Not Android, but, much of what konk3r said in his comment is packaged nicely and easily consumable in Refactoring by Martin Fowler. Before you begin coding Android, understand Java and what it takes to write maintainable code. Any mildly intelligent chimpanzee can write code; it takes a talented programmer to write code that others (or even the dev himself) can maintain.

Other things:

  • Understand list views. They're ridiculously complicated but there are very few apps that don't need them, and I can count on one hand the number of developers in my company that I've come across that can implement them correctly.

  • Model-View-Controller. If you don't know the paradigm, look it up. iOS/Objective-C does a lot better job of lending itself to the paradigm naturally, but that does NOT mean that it is not applicable in Java. Separating your UI from your business logic/data is crucial and will save you SO MUCH PAIN later in maintenance stages.

  • Understand the Activity lifecycle. Re-read the documentation and experiment until you understand its ins-and-outs.

  • Never use hardcoded strings. They're a nightmare to maintain and completely impossible to re-use. For Android, UI strings should go in strings.xml (this means, if text appears in your app UI, it better be a string resource). You may also opt to use them for non-UI things, but I prefer constants in well-named files.

  • Understand when you need application context versus activity context. Understand the differences in the two. Use them appropriately.

  • Android is open source and apps are extremely easy to unravel to their source code, so, don't be shy about pulling down someone else's app and dissecting it to figure out how they implemented that cool functionality. Google's apps especially. Obviously don't commit copyright infringement, but a good programmer knows when to write from the ground up and when to not reinvent the wheel.

  • If you're passing information between activities, use Parcelable, or the Android Gods will smite thee. NOT serializable.

  • Utilize Android's helper classes. Did you know they have a TextUtils class? It is great for String functions (like checking if a string is null or "" with isEmpty();).
u/protein_bricks_4_all · 3 pointsr/learnprogramming

There's OO design, and there's particulars as to how to implement things in C++. I'm totally with unapersson as to, that the Os you make are as often conveniences or design helpers as representing real world objects. Ie that it's implementation objects. I don't remember how much OO design advice Effective C++ has, but it's a good book to get someone to intermediate C++ programmer. C++ Coding Standards by Herb Sutter and Andrei Alexandrescu talks at a fast clip about a lot of taste and design issues; I haven't looked at the 3rd edition of Eff. C++ but, from earlier editions, the difference is that Coding Standards is more dense, and sophisticated; Eff. C++ more basic (from what I can see, Coding Standards does cover the same material as Eff C++, but in a very compressed form, only the most minimal discussion; maybe not what you want when you're seeing the material for the first time.

As for pure OO design, I've heard that straight-up Grady Booch is still the best, but I have no experience of it.

I will say, if you want to be good at C++, you'll have to spend money on books (but get your company to buy them perhaps - compared to programmer time, books are free), and time on reading them; there are a lot of best-practices, technicalities and real pitfalls that are not immediately obvious.

edit:

&gt; Also, should I be studying data structures/algorithms in unison with OOP?

Definitely. Have you learned the basics, stack, tree, queue, hash tables (or set, map, vector, unordered_set, unordered_map)? You /must/ know these. (priority_queue and list too, less so maybe.) If you can though I'd read (somehow) about other data structures, spatial ones especially in your case; they can really make your program more efficient and thus able to do more.

edit edit:

I have to say, the above books are for long-lasting code; probably for games your best bet is to look at how other programmers write their games (smaller, simpler, even in other languages - it can be hard to understand large, sophisticated codebases) and, just the necessary experience you gain from writing your own.

u/theimp_ · 3 pointsr/orlando

If this is your first programming language its a tad unfortunate that it has to be C++ but by no means does it mean it is bad or anything. In fact its the language most aspiring computer scientists started out with in college prior to the 2000s.

You can start off with
Programming: Principles and Practice Using C++
and then going onto The C++ Programming Language, 4th Edition after completing the first one. There is also C++ Primer that is also highly recommended as another book for starting out.

A book along with web searches when you have questions will get you pretty far. Having someone to ask questions if you get stuck on something conceptually is also useful. The best advice I can give you is to really play around with the language as you are learning and do most of the practice exercises too. Stroustrup also has solutions to the exercises from the first book I mentioned online. Hopefully you have some months available to learn the language. On top of that you might need to learn some computer science topics like data structures as well. You just can't rush these things but you can accelerate it a little.

As for me, my C++ knowledge is 'rusting away' by the day. I learned the STL with C++ when it was made official only a couple years after (like over 10 years ago). Nowadays you have Boost and the language itself has changed. I have not presently needed to update my C++ knowledge to what is latest and greatest but I shall.

Also worth pointing out is that In my experience, when you work with different companies you might find that you never use official C++ libraries and most current language features, but you are supporting legacy stuff that was first written maybe 20 years ago when not even built-in STL was available. This means either you are going to use some now-arcane implementation of someone's version of base libraries or the company rolled their own from the ground up many years ago, and because its so well entrenched in the code-base it continues to be used many years later. Not a big deal, but you might want to find that out for yourself, that if you are learning the latest and greatest of library and language features - you might or might not be using it in practice with your company.

You can PM me if you have questions but I'm not sure I can commit the amount of time you might need in a tutor role.

u/zorfbee · 32 pointsr/artificial

Reading some books would be a good idea.

u/zahlman · 1 pointr/learnpython

&gt; Python with Github? Of course I can google plenty of guides, but the fact that I read many of them and still don't use it, shows me that I don't think the guides were good or sufficient (or I just suck at google). To me (for now) it feels like a big hassle with the commits, etc. for a very small profit (despite the sharing with other people). Is there a good and concise resource that you'd recommend?

Is it really GitHub you need help wrapping your head around, or is it git itself that causes the problem?

&gt;101 of bad habits/beginner mistakes link/resource? I've seen plenty of links now that say "don't import *!" or similar stuff. But never a real compilation. Can also be about habits of programming or little shortcuts or tricks and tips, not only common mistakes people new to Python make. I know I'm asking for a lot but it might help and turn out to be very useful.

Well, there's the Zen of Python, which you can see for yourself at the REPL using import this. But for more concrete advice... if I found a compilation like that, I don't know that I'd trust it. A lot of these things are subjective. And anyway, if you're expecting to be able to read through something like that and magically get rid of bad habits, I can tell you it just doesn't work that way. You need to practice, and you also need to focus on the positives rather than negatives. Get used to the techniques by which code is improved. If you like physical books for this sort of thing (I don't), the best I can recommend is this one - you might be able to find online versions, but as far as legality goes, you're on your own to figure that out.

u/xnoise · 1 pointr/PHP

There are a ton of books, but i guess the main question is: what are you interested in? Concepts or examples? Because many strong conceptual books are using examples from java, c++ and other languages, very few of them use php as example. If you have the ability to comprehend other languages, then:

http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?ie=UTF8&amp;amp;qid=1322476598&amp;amp;sr=8-1 definetly a must read. Beware not to memorize it, it is more like a dictionary. It should be pretty easy to read, a little harder to comprehend and you need to work with the patterns presented in that book.

http://www.amazon.com/PHP-5-Objects-Patterns-Practice/dp/1590593804 - has already been mentioned, is related directly to the above mentioned one, so should be easier to grasp.

http://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420/ref=sr_1_1?ie=UTF8&amp;amp;qid=1322476712&amp;amp;sr=8-1 - one of the most amazing books i have read some time ago. Needs alot of time and good prior knowledge.

http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672/ref=sr_1_4?ie=UTF8&amp;amp;qid=1322476712&amp;amp;sr=8-4 - another interesting read, unfortunatelly i cannot give details because i haven't had the time to read it all.

u/PrincessSmaug · 1 pointr/learnprogramming

I, too, am learning partially through Free Code Camp. What's great about them is that they give you (a) a structure of topics to learn in a certain order, and (b) actual projects to work on.

What you cannot do is learn exclusively through FCC. I see them as a starting point. They will link you to MDN documentation in their challenges, but don't rely on those either. MDN is written for people who already have some familiarity with JS and may not be readable if you do not already understand the basics of JavaScript.

If you're looking to stay with free resources, try looking up YouTube videos that have a high number of views and positive ratings. I stumbled on this channel and have used it a few times. YouTube videos will help you see exactly what the code is doing.

If you're willing to pay for a book, I have found Jon Duckett's JavaScript &amp; jQuery book very helpful. Also try checking out his HTML &amp; CSS book, though I haven't used it much as I am already pretty familiar with HTML (less so CSS, but I am familiar enough with the basics to rely on Google for anything else I need).

Feeling overwhelmed at FreeCodeCamp doesn't mean you'll never learn the concept. What it does mean is that you need to take a step back and really learn the concepts by checking out as many outside resources as you can, then go back to their challenges and complete them.

Good luck :)

u/Eggbotnik · 4 pointsr/learnandroid

I think the first confusion here is that the language is a entity in the construction of a program. Does the type of a house that is built depend on what type of hammer the carpenter used to put up the walls? Or what kind of wrench a plumber used to put together the piping? Sure, the carpenter or plumber could've used a crowbar to do their job, but was it the right tool for the right job?

The right tool to build an Android app is Java. If you need better performance, and you don't need Google APIs, you can include C or C++ to further improve performance at the cost of added complexity.

There are a lot of different abstractions to add the ability to use other languages on the platform, but this comes at the cost of performance, and added potential points of failure (more abstractions = more potential bugs not caused by the coder.)

Heavy number crunching (especially on a RISC architecture) may push the device to its limits. Do yourself a favor and learn how to use the right tool for the right job. This book is both entertaining and informative, and this book will get you started in on C++ in a short amount of time.

C++ is the inspiration for Java, and the creation of Java is what caused C# into being. As such, the syntax for all of these languages are tightly woven between each other. I wouldn't doubt that within 15 minutes of light reading on Java you'll be up and running in its entirety.

C++, while being a slightly more complicated beast, isn't inherently an overly complicated one. The Object-Oriented concepts are all there to be leveraged.

While you say you're not a professional programmer; I think you'll find that broadening the languages you do learn will improve your ability to convey your thoughts and concisely implement them.

Best of luck!

u/w4nderlusty · 1 pointr/TrollXChromosomes

Some more learning tools:

  • Tuts+ has a number of great coding video tutorials, many of them free. Definitely worth a look.

  • If you like the code-as-you-go kind, check out Code School. It's $30us a month but the courses are more in depth than codecademy.

  • Book wise, Eloquent JavaScript is a good place to start (and its a free download!).

  • Id also recommend JavaScript Enlightenment for advanced beginners, and JavaScript the Good Parts for those with a bit more experience.

  • Another good beginner book is JavaScript &amp; jQuery by Jon Duckett, it's got a great design and is much more illustrative than traditional books.

    edited to add links; formatting
u/scohan · 2 pointsr/compsci

I think this might be beyond what you're looking for, but I really enjoyed Pattern Recognition and Machine Learning. It's very heavy on statistics, and if you're looking into machine learning methods, it has a wonderful amount of mathematical information given in a fairly clear manner. It might be severe overkill if this isn't your field, but I thought I'd mention it since you said AI.

For AI in general, I see Artificial Intelligence: A Modern Approach used a lot. It gives some solid basic concepts, and will be helpful in getting you started writing basic AI in your applications.

I can't really recommend discrete math because, despite enjoying it quite a bit, I haven't found a textbook that I like enough to endorse. My textbook for it in college was by Rosen, and I despised it.

edit:
Just double checked it, and I would stay far away from the first recommendation unless you have a very extensive knowledge of sophisticated statistics. I like it because it gives the math that other books gloss over, but it's not good for an introduction to the subject. It's almost like going through a bunch of published papers on some new cutting edge methods. The ever popular Machine Learning by Thomas Mitchell is a much better introduction to machine learning. If you want to obtain the mathematical depth necessary for your own research into the field, go with the other book after you've gotten acquainted with the material. I'll leave my suggestion up anyway in case anyone here might find it interesting.

u/valbaca · 2 pointsr/cscareerquestions

These are books I actually own and would recommend. Of course there are other great/better books out there, but I'm going to stick with what I've actually bought and read or "read".

I say "read" because several books are NOT meant to be read cover-to-cover. These typically have about 1/3 that you should read like normal, and then skim the rest and know what's in the rest so that you can quickly reference it. These books are no less important, and often even more important. I've marked these kind of books as #ref for "read for reference". Normal books that should be read cover-to-cover are marked #read


For learning your first language: This is really the hardest part and unfortunately I don't have any books here I can vouch for. I started with "C++ for Dummies" and am not including a link because it's bad. Your best bet is probably "Learning &lt;language&gt;" by Oreily. I also love the Oreily pocket books because you can carry them and skim while on the bus or the john, but you can just do the same with your smartphone. Pocket Python, Pocket Java, Pocket C++

Top Recommendations:

Accelerated C++ #read Made for people who already know another language and want to pickup C++. Also great for people who need a refresher on C++. I really like how it doesn't start with OOP but gets you familiar with the imperative parts of C++ before diving into OOP.

The Algorithm Design Manual #ref This is my new favorite book and the first I would send back in time to myself if I could. Each algorithm &amp; data structure is given a mathematical breakdown, pseudocode, implementation in very readable C, a picture (very helpful), and an interesting war story of how it Saved The Day.


Cracking the Coding Interview #read I originally avoided this book like the plague because it represented everything I hate about coding interviews, but many interviewers pull questions straight from this book so this book can equal getting a job. Put that way, it's ROI is insane.

The Pragmatic Programmer #read Must-have for any profressional software engineer that covers best-practices for code and your growth. You can also find the raw tips list here

Head First Design Patterns #read Many prefer the "GoF/Gang of Four" Design Patterns which is more iconic, but Head First is a modern-version using Java to cover actual design patterns used day-to-day by programmers.

For Intermediates:

Effective Java or Effective C++ and Effective Modern C++ #read When you're ready to go deep into one language, these books will give you a huge boost to writing good Java and C++.

Design Patterns #ref You'll want to get this at some point, but early on it's too much for a beginner and many of the patterns are obsolete.

The Art of Computer Programming #ref The programming "bible" but like Design Patterns you should hold off on this iconic book until you've got your basics covered. It would make for a great purchase with your first paycheck or first promotion :)

u/koeningyou666 · 73 pointsr/netsecstudents

In my opinion; every book in this bundle is a bag of shit.

Here's a list of reputable books, again in my opinion (All links are Non-Affiliate Links):

Web Hacking:

The Web Hackers Handbook (Link)

Infrastructure:

Network Security Assessment (Link)

Please Note: The examples in the book are dated (even though it's been updated to v3), but this book is the best for learning Infrastructure Testing Methodology.

General:

Hacking: The Art of Exploitation (Link)

Grey Hat Hacking (Link)

Linux:

Hacking Exposed: Linux (I don't have a link to a specific book as there are many editions / revisions for this book. Please read the reviews for the edition you want to purchase)

Metasploit:

I recommend the online course "Metaspliot Unleashed" (Link) as opposed to buying the book (Link).

Nmap:

The man pages. The book (Link) is a great reference and looks great on the bookshelf. The reality is, using Nmap is like baking a cake. There are too many variables involved in running the perfect portscan, every environment is different and as such will require tweaking to run efficiently.

Malware Analysis:

Practical Malware Analysis (Link)

The book is old, but the methodology is rock solid.

Programming / Scripting:

Python: Automate the Boring Stuff (Link)

Hope that helps.

u/joeswindell · 5 pointsr/gamedev

I'll start off with some titles that might not be so apparent:

Unexpected Fundamentals

These 2 books provide much needed information about making reusable patterns and objects. These are life saving things! They are not language dependent. You need to know how to do these patterns, and it shouldn't be too hard to figure out how to implement them in your chosen language.

u/PM_ME_YOUR_0-DAYS · 2 pointsr/AskNetsec

&gt; Ps; anyone know of a good recommendation on how to start on web apps on the labs. Looking for a good book or resource.

The OSCP web app portion is good, but if you're like me you might benefit from some supplemental materials. Not necessarily specific to the course, but I found these resources really helpful for working on my web app skills

u/George3d6 · 2 pointsr/cpp

If you actually want to learn to implement efficient algorithms and data structure in C++ you might have a long road ahead of you since loads of them are quite complex. If you're interests are purely in machine learning than I would suggest you make use of the containers and algorithms provided by std and boost.

Going more domain specific and using things like armadillo or eigen. The later is used in many popular NN libraries/frameworiks such as tensorflow while the former is (based on my subjective opinion) quit easy to use, more similar to matlab and used in a number of libraries such as dlib and opencv. These "higher" level libraries are likely even better suited for your needs since they may help you use multiple cpus and gpus for your algorithms.

Further more, if you are interested in getting something shipped out quickly check out some C++ ML libraries, my personal favorite is Dlib but its quite limited in scope. However, I assume you wish to implement your own algorithm, in which case you are in luck because most of these libraries are open source:

https://github.com/tensorflow/tensorflow/tree/master/tensorflow
https://github.com/davisking/dlib
https://github.com/opencv/opencv
https://github.com/Somnibyte/MLKit

(are some examples of such libraries).

For familiarizing yourself with C++ I'd recommend:

-&gt; so documentation

-&gt; [Programming: Principles and Practice Using C++](https://www.amazon.com/dp/0321992784/?tag=stackoverfl08-20](https://www.amazon.com/dp/0321992784/?tag=stackoverfl08-20)

-&gt; Effective Modern C++

Stack overflow documentation has plenty of examples that explain things which might otherwise seem strange about the language, Programming: Principles and Practice Using C++ was written by the creator of the language, Bjarne Stroustrup, who also happens to be a university teacher, so I would say it could be considered an objectively reasonable starting point for learning C++ for someone not very experienced with programming and Effective Modern C++, while aimed at programmers that are already experienced with C++, might give you a bit of insight into understanding why old codebases look the way they do and how to improve them and not repeat their mistakes (its also quite a well written book in many aspects, quite a pleasure to read).

Also I would avoid any C++ centric book on algorithms and data structures written pre 2011 like the plague, since the language has evolved a lot and you might find yourself learning a very old.

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&amp;amp;ie=UTF8&amp;amp;qid=1335197606&amp;amp;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&amp;amp;ie=UTF8&amp;amp;qid=1335197606&amp;amp;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&amp;amp;ie=UTF8&amp;amp;qid=1335199316&amp;amp;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&amp;amp;ie=UTF8&amp;amp;qid=1335200153&amp;amp;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&amp;amp;ie=UTF8&amp;amp;qid=1335201257&amp;amp;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/JonKalb · 28 pointsr/cpp

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

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

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

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

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

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

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

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

Be certain to get the 5th edition.

Of Scott's books only the latest is Modern.

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

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

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

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

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

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

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

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

Some library options:

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

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

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

Good luck and have fun!

u/yamamushi · 11 pointsr/cpp

I would supplement your class with one of the many great C++ books out there, because there are many ways to learn C++ but few of them are good (or even "right") ways.

You should be careful to distinguish between best practices from C++ and the new ones in C++11, and I've found that many courses tend to teach C++ as if it's just C with some extra features.

Of note, some really good books are:

u/Unsounded · 2 pointsr/learnprogramming

These are good, but I would say they're actually better for learning C++ rather than branching to higher level concepts. C++ is one of the easiest languages to implement best practices with and it's intuitive if you're a good programmer. The language and standard itself promotes cleverness and conciseness.

Some books I would suggest for branching to higher level C++ would be Effective C++ and More Effective C++.

Both are wonderfully written and relevant across standards. It focuses on bigger picture C++ rather than exactly current standards.

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/alkavan · 2 pointsr/gamedev

C++ has been around for exactly 30, what i mean by that is that it's still widely used in production until this day, and doesn't look like it's gonna change any time soon. it's more then any other language out there, with C as an exception. I'm not sure C# would be valid in 10 or 20 years, but C++ would.

Your best resource for learning C++ would be good books. Like i mentioned, i highly recommend The C++ Programming Language, 4th Edition, it's updated and very complete reference to the language. there's also Effective C++ - it's not for beginners.

There's right, you won't find too much resources about C++ at first glance, but you will if you will dig a bit deeper.

Here's few sites that you should use:

  • C++ reference
  • The C++ Resources Network
  • Boost

    You also might find some useful stuff and links in the Google+ C++ Community


    Other people and myself have mentioned learning C++ is not easy, partly is because the lake of documentation on the web. but once you know the language well, you will enjoy it's benefits. It's not for everyone though. I also recommend looking into new technologies like emscripten, it allows to compile C++ code into JavaScript, understand the implications of that, and maybe you will also have my POV.
u/keconomou · 1 pointr/netsec

I was hoping to get specifically into crypto/privacy. I've been learning from these books:

  • http://www.amazon.com/Understanding-Cryptography-Textbook-Students-Practitioners/dp/3642041000

  • http://www.amazon.com/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1348702359&amp;amp;sr=1-1&amp;amp;keywords=concrete+mathematics

    and supplementing that with the Coursera Cryptography I class

    my eventual goal is to do either information security or penetration testing, but pen testing seems like one of those jobs that sounds great and seems so cool that everyone wants it. Like the job equivalent of planning on being a rock star.

    I've got a working knowledge at least of Java, but no programs to show for it yet (which was the source of my wanting this advice here.)

    Also, I have been doing this without a college, and don't really plan on going to college at any point soon.

    I do want to look into certifications, they were something I've had an eye on, but the opinions on their use is so varied on them I just figured I'd wait to get them until after I had a working knowledge base, then just blow through them to have the piece of paper.

    I've read around that the CISSP takes 5 years to take credit for, and the associates is like 3 or so. While I do want the most laudable one (i've read the DoD/Gov'ts cert requirements and it cares a LOT about the CISSP), That would mean 3-5 years of a catch-22 of not having the job to get the CISSP exp. with, because it would be my only cert so far and I can't take credit for it, therefore I have no certs and can't get exp.

    I've messed around with backtrack and armitage, and got through as much of Hacking Exposed (6th edition) to know at least the process, but haven't applied any of it and it seemed like it might be better to learn how things work before subverting details and breaking protocols for fun and profit.

    I do plan on getting the CISSP, but I'm not gonna start that process until I already have a job in the field i can use as experience to get more jobs, otherwise I'll just be sitting on my hands.

    Does that all seem alright, or do you have any advice? Sorry for talking your ear off, if that's what i did just now.
u/khedoros · 1 pointr/cpp_questions

C++ has a bit of history. From 1985-1998, it wasn't standardized. C++98 was the first standard, then C++03 (some minor helpful additions). The 2011 revision (C++11) was a big turning point for the recommended way to use the language. It's a bare minimum that any learning material you use follows that standard, or a later one. C++14, C++17, and the upcoming C++20 all bring new features, but on a beginning level, I don't think the differences between 11, 14, 17, and 20 will be huge.

Honestly, I took 2 school classes, 20 years ago and 12-13 years ago, and those got me the basics, as they existed at the time. So, I'm not so familiar with good beginner's texts, or the usually recommended online resources.

MIT's OpenCourseware has an Intro to C++ class, but the version posted is as taught in January 2011, and it doesn't recommend a text, instead pointing to some online resources. At least the online resources are more likely to be somewhat up-to-date.

As a reference, CPPReference is pretty much my gold standard. There is a similar reference at cplusplus.com, but it has the reputation of occasionally being inaccurate. And although they've got a beginner's tutorial, it looks like it teaches some things in a less-than-modern way (requiring things like completely manual memory management).

Wikiversity has a C++ Intro too, but it looks like at least the earlier chapters have similar memory-management shortcomings as the cplusplus.com one, so I wonder if it's usual to teach smart pointers as an intermediate topic, or something. If you go through those tutorials, it might make sense to read A Tour of C++, which would give an overview of the newer features in the language, ranging from beginner, to intermediate and advanced, but not going into things to an overwhelming depth.

I did find Programming Principles and Practices Using C++ 2nd Edition, published in 2014 by the creator of the language. It's designed as an introduction to programming, using the C++ language. If you're willing to pay the money, I'd go for that. Otherwise, you can certainly piece together information using various online sources.

On another thread, someone mentioned Google's C++ tutorial, and it's probably reasonable to read through that one too.

u/Little_darthy · 49 pointsr/programming

Edit: I didn't realize the link was just the first chapter. If you really liked it, I do suggest purchasing it. You can find it all online for free, but I do highly recommend just having this book. It's a fun read.

&amp;nbsp;

Here's an excerpt that I really love right from the beginning of the book.

&gt;&gt;All programmers are optimists. Perhaps this modern sorcery especially
attracts those who believe in happy endings and fairy godmothers.
Perhaps the hundreds of nitty frustrations drive away all
but those who habitually focus on the end goal. Perhaps it is
merely that computers are young, programmers are younger, and
the young are always optimists. But however the selection process
works, the result is indisputable: "This time it will surely run," or
"I just found the last bug."

Here's a link to a Physical copy [on Amazon] (https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959) if you want it.

&amp;nbsp;

edit: Bonus Dilbert Comic

u/dohpaz42 · 3 pointsr/PHP

Agreed. There are plenty of resources out there that will help you understand design patterns. If you're new to the concept, I would recommend Head First: Design Patterns, it might be based on Java, but the examples are simple to understand and can mostly apply to PHP as well. When you feel like you've grasped the basic concepts of design patterns, you can move on to more advanced texts, like Martin Fowler's Patterns of Enterprise Design - this is a great reference for a lot of the more common patterns. There is also Refactoring: Improving the Design of Existing Code. These are great investments that will help you with any project you work on, and will help you if you decide to use a framework like Zend which uses design patterns very heavily.

u/sbsmith · 12 pointsr/gamedev

Hi PizzaPartify,
I believe that different companies/teams will place emphasis on different skills. When I was helping to hire software engineers for EA's motion capture studio, I liked to see candidates who showed a strong aptitude for engineering code to be maintainable. For me, this meant a familiarity with design patterns and software development processes (like Test Driven Development or Extreme Programming). In my department, much of our code was in C++ and Python. However, other departments would use languages like Java, C# or ActionScript - depending on the project.

It would be helpful to know what role you are applying to.

To answer your specific questions:

  1. If you're already familiar with C++, I would highly recommend reading Effective C++ by Scott Meyers (http://www.amazon.ca/Effective-Specific-Improve-Programs-Designs/dp/0321334876). Every C++ developer should read this.

    Regardless of the language you're working in, I would also recommend Design Patterns by the gang of four (http://www.amazon.ca/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612).

    A game-specific recommendation is Game Engine Architecture by Jason Gregory (http://www.amazon.ca/Game-Engine-Architecture-Jason-Gregory/dp/1568814135). It doesn't matter if you intend to write an engine or not, it is immensely helpful to understand how they work.

    I own all of the Game Programming Gems books but use them more as a reference library. The books above will be more helpful right now.

  2. I worked with Unity only briefly to prototype a game, so I can't really comment here.

  3. This is tricky. I think you will need to find a passion project in C++ so that you will just naturally learn more about the language. And speaking of passion: you need to really want the job you are applying for. I have seen qualified developers miss out on jobs because you could tell they were just looking for anything (rather than really being enthusiastic about the position).

    I hope that helps.
u/i_make_song · 1 pointr/audioengineering

Do you have any background knowledge in electronics? Because I would seriously start there.

I realize you are an adult, but Make: Electronics (Learning by Discovery) was a really great book for me (an adult). It gives you a good foundations in electronics and has fun projects as well.

Make: Analog Synthesizers was particularly fun for me.

Any interest in either of those books? They're both great starting points.

u/emcoffey3 · 2 pointsr/IWantToLearn

Objects are for grouping related data and methods together. It really is as simple as that.

Start off by writing applications where you're just creating and consuming objects, not writing your own classes. Java and .NET both have tons of libraries that contain a wide assortment of objects. You mentioned C#, so write a few .NET apps. Try to start identifying and understanding the way properties and methods are grouped into objects, and how the different objects relate to each other.

Once you're comfortable using objects, then you can start writing your own classes. A lot of universities try to teach this by having you write common data structures. This approach is worth considering, as it's important to be familiar with data structures, but this isn't the only way to learn object-oriented programming (nor the best, in my opinion). Another commenter recommended writing a video game, which sounds like it's worth a try. Ultimately, the right approach is the one that interests you the most.

Getting good at OOP will take some practice, but it is possible. Objects are like functions: they should do one thing well. Enforce separation of concerns. Learn the design patterns. Practice makes perfect(-ish).

Recommended Reading:

u/GlorifiedPlumber · 1 pointr/ChemicalEngineering

I don't know of any that compare, but, the Napoleon's Buttons is SUPPOSED to be good.

http://www.amazon.com/Napoleons-Buttons-Molecules-Changed-History/dp/1585423319/

Other books, engineering related, that I liked are:

Norm Lieberman's Process Troubleshooting books, the guy cracks me up!

Working Guide to Process Equipment (3rd edition probably cheaper): http://www.amazon.com/Working-Guide-Process-Equipment-Fourth/dp/0071828060/

Process Equipment Malfunctions (not as good as the other one, some overlap, but still worthwhile, and covers more breadth for individual issues): http://www.amazon.com/Process-Equipment-Malfunctions-Techniques-Identify/dp/0071770208/

The Prize (mentioned above): http://www.amazon.com/gp/aw/d/1439110123/ref=redir_mdp_mobile/188-3799228-4803548

The Quest (Follow on to The Prize): http://www.amazon.com/Quest-Energy-Security-Remaking-Modern/dp/0143121944/

Oil 101: http://www.amazon.com/Oil-101-Morgan-Downey/dp/0982039204/

The Mythical Man Month (Not engineering directly as it pertains to software, but, projects and project management are huge in engineering, though this book is timeless): http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/

Piping Systems Manual (You can NEVER know enough about pipe!): http://www.amazon.com/Piping-Systems-Manual-Brian-Silowash/dp/0071592768/

Pumps and Pumping Operations (OMG it is $4, hardcover, go buy now! This book is great... did you know OSU didn't teach their Chem E's about pumps? I was flabbergasted, gave this to our intern and he became not a scrub by learning about pumps!): http://www.amazon.com/Pumping-Operations-Prentice-Pollution-Equipment/dp/0137393199/

Any good engineer needs to understand MONEY too:

The Ascent of Money: http://www.amazon.com/Ascent-Money-Financial-History-World/dp/0143116177/

It's Nial Fergesuon, who has had his own series of dramas and dumb stuff. The Ascent of Money has a SLIGHT libertarian tinge... but it wasn't bad enough that I didn't enjoy it. I consider it a history book, and he attempts to write it like one.

Have fun!

u/______POTATOES______ · 1 pointr/computerscience

For starters: http://c.learncodethehardway.org/book/

Then for some advanced material (Books, sorry they cost $ but they are written by a king C++ con$ultant) : Everything this guy writes. Namely his "...Tips for Effective C++" series, of which he has several. He released one very recently, actually.

u/GenesisTK · 7 pointsr/uwaterloo

http://www-math.mit.edu/~rstan/ec/
I'll give you a brief about the book: It's really dense and probably will take you a while to get through just a couple of pages, however, the book introduces a lot of interesting and difficult concepts that you'd definitely see if you pursue the field.

https://math.dartmouth.edu/news-resources/electronic/kpbogart/ComboNoteswHints11-06-04.pdf
Is a Free book available online and is for a real beginner, basically, if you have little to no mathematical background. I will however say something, in Chapter 6, when he talks about group theory, he doesn't really explain it at all (at that point, it would be wise to branch into some good pure math text on group and ring theory).

https://www.amazon.ca/Combinatorics-Techniques-Algorithms-Peter-Cameron/dp/0521457610
This is a fantastic book when it comes to self studying, afaik, the first 12 chapters are a good base for combinatorics and counting in general.

https://www.amazon.ca/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025
I've heard fantastic reviews about the book and how the topics relate to Math 2 3/4 9. Although I've never actually used the book myself, from the Table of Contents, it appears like it's a basic introduction to counting (a lot lighter than the other books).

Regarding whether or not you can find them online, you certainly can for all of them, the question is whether legally or not. These are all fairly famous books and you shouldn't have trouble getting any one of them. I'm certain you can study Combinatorics without statistics (at least, at a basic level), however, I'm not sure if you can study it without at least a little probability knowledge. I'd recommend going through at least the first couple of chapters of Feller's introduction to Probability Theory and it's Applications. He writes really well and it's fun to read his books.

u/Bugos19 · 1 pointr/electronics
  • I can't recommend a better book than this one.
  • Get this resistor kit. Seriously, I bought one of these a year ago and I've never once had to buy more resistors.
  • You're going to need a capacitor set like this one.
  • You're also going to need a breadboard.
  • Make a trip to Maplin and get an assortment pack of LEDs and a few switches. Trust me, this will make your life a tons easier when it comes to making proof of concept or test circuits. And they make circuitry more interactive and fun!
  • Lastly, get a cheap multimeter. You can get one at Maplin or somewhere similar for like &lt;15 pounds.

    Sorry about the links, I'm in the US so the prices will be in USD but that shouldn't be a problem. I really hope you find this hobby as intriguing as I do, I started a year ago making little flashlights and what-not and now I'm making motion detectors and all kinds of cool gadgets. If you'd like some guidance or help, don't think twice about PMing me! Best of luck.
u/KevinHock · 1 pointr/netsec

Senior Security Engineer

Hi, I'm Kevin Hock and I work on the DataDog security team.
We are looking for some talented security engineers to join our security team here in NYC.

How Do I Apply

Send me an email with your resume and GitHub at kh@datadoghq.com

What you will do

  • Perform code and design reviews, contribute code that improves security throughout Datadog's products
  • Eliminate bug classes
  • Educate your fellow engineers about security in code and infrastructure
  • Monitor production applications for anomalous activity
  • Prioritize and track application security issues across the company
  • Help improve our security policies and processes

    Who you should be

  • You have significant experience with network and application security
  • You can navigate the whole stack in pursuit of potential security issues
  • You want to work in a fast, high growth startup environment

    Bonus points

  • You contribute to security projects
  • You're comfortable with python, go and javascript. (You won't find any PHP or Java here :D)
  • CTF experience (I recommend you play with OpenToAll if you don't have any)
  • Program analysis knowledge

    Sample interview questions

  • Flip to a page of WAHH, TAOSSA, CryptoPals, ask you about it.
  • Explain these acronyms DEP/ASLR/GS/CFI/AFL/ASAN/LLVM/ROP/BROP/COOP/RAP/ECB/CBC/CTR/HPKP/SSL/DNS/IP/HTTP/HMAC/GCM/Z3/SMT/SHA/CSRF/SQLi/DDoS/MAC/DAC/BREACH/CRIME?
  • How would you implement TCP using UDP sockets?
  • How do you safely store a password? (Hint: scrypt/bcrypt/pbkdf2)
  • How does Let'sEncrypt work?

    Hat tip to Levi at SquareSpace, also on this thread, he is an awesome person to work with. David Wong, a crypto king of NCC, on this very Q4 thread, is also a great person to work with in Chicago.
    If you're looking to break stuff more than build stuff hat tip to Chris Rohlf's Yahoo! team.
    Random other places you can apply in nyc: MongoDB, Jane Street, 2 sigma, greenhouse.


    I personally applied because I love Python but I like the company a lot so far.
u/beyond-antares · 1 pointr/learnprogramming

This is a popular topic but I don't often see a comprehensive answer. I'm by no means an expert and currently learning myself.

There's two key stepping stones before jumping into AI, that being learning Python and data science. Python has wide support and a host of libraries reflecting the latest research on AI development.

There is also R, Octave and Java depending on the libraries you're looking to use, but they aren't nearly as popular as python. Note that if you want to embed your AI scripts into web apps or apps, then you'll need to learn javascript and java respectively.

The best resources for Python are

  1. Automate the Boring stuff - Al Sweigert

  2. Hitch hikers guide to Python

  3. Dive into python

    Great resources can be found here:

    The next step is to get a brief grasp of data science. You can learn these from:

  4. www.datacamp.com for Python and R

  5. Coursera course on data science

  6. Udemy courses in Python and R (Note these would most likely be paid courses so wait for the monthly discounts to kick in to purchase them for $10-$15)

    I wouldn't recommend codeacadmy since it's dated written in Python v2.x whereas Python 3.6x is more widely used

    Then I would consider AI Specific courses found online. Theres two routes again here, there's the heavily academic route that delves into the theory and mathematics then there;s the practical route. Depends on the speed and pace you want to learn at because it's a massive field.

    Theoretical

  7. Udacity - Introduction to Artificial Intelligence (standford course)

  8. Coursera - Andrew Ng's Deep Learning specialization course. Note the course uses octave which is similar to Matlab style programming. The courses when accessed individually are for free or you can pay for a certification.

  9. Various lectures on youtube for MIT and Stanford's Artificial Intelligence courses.

  10. A really good text book to check out is Artificial Intelligence - A modern Approach. AI was traditionally scripted in Lisp or prolog. This has been coverted into Python over here

    Practical:

  11. Krill Ermenko - AI, Machine Learning and DEEP Learning from A-Z

  12. Fast.ai Dives into keras a top level library
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&amp;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/heres_some_advice23 · 2 pointsr/computerscience

Mechanical Keyboards: High quality keyboards with tactile feedback. They have a real impact on your typing speed, and also make programming less boring. They are very commonly used by programmers. Mechanical keyboards have different "switches" that make different tactile sounds. "Blue Switches" are considered the most popular. Here are some examples: https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=mechanical+keyboard.

Gaming Mouse: Same usage as keyboards, but not as useful. Its mostly just nice to have.

Textbooks: In computer science, there are one or two textbooks per subfield that are considered to be "Bibles" of the subfield because of their importance. If your bf just started cs, he won't have any interests in any subfield. However, the subfield of algorithms is more or less all encompassing. More crucially, knowledge of algorithms is the most important (and arguably only) thing you need to know to get a job. If you want to work at a top CS company like Facebook or Google, you need to know your algorithms very well in order to pass the interviews. There are two books I can recommend for this:
https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/ref=sr_1_1?ie=UTF8&amp;amp;qid=1503472210&amp;amp;sr=8-1&amp;amp;keywords=algorithms
and
https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ref=sr_1_5?ie=UTF8&amp;amp;qid=1503472210&amp;amp;sr=8-5&amp;amp;keywords=algorithms
These are the most prolific algorithms books (imo). Another important book is "Cracking the Coding Interview": https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1503471832&amp;amp;sr=1-1&amp;amp;keywords=how+to+crack+the+coding+interview

This is the "Bible" textbook for passing tech interviews. Every computer science student I know at school has at least skimmed through this book once.

Personally, if I were starting in CS, I would appreciate either the mechanical keyboard or the "Cracking the Coding Interview" textbook the most. Good luck!

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/NicolasGuacamole · 5 pointsr/MLQuestions

A good textbook will do you wonders. Get one that is fairly general and includes exercises. Do the exercises. This will be hard, but it'll make you learn an enormous amount faster.

My personal favourite book is Christopher Bishop's Pattern Recognition and Machine Learning. It's very comprehensive, has a decent amount of maths as well as good examples and illustrations. The exercises are difficult and numerous.

That being said, it is entirely Machine Learning. You mention wanting to learn about 'AI' so potentially you may want to look at a different book for some grounding in the wider more classical field of AI than just Machine Learning. For this I'd recommend Russel and Norvig's [AI: A Modern Approach](https://smile.amazon.co.uk/Artificial- Intelligence-Modern-Approach-Global/dp/1292153962). It has a good intro which you can use to understand the structure and history of the field more generally, and following on from that has a load of content in various areas such as search, logic, planning, probabilistic reasoning, Machine Learning, natural language processing, etc. It also has exercises, but I've never done them so I can't comment much on them.

These two books, if you were to study them deeply would give you at least close to a graduate level of understanding. You may have to step back and drill down into mathematical foundations if you're serious about doing exercises in Bishop's book.

On top of this, there are many really good video series on youtube for times when you want to do more passive learning. I must say though, that this should not be where most of your attention rests.

Here are some of my favourite relevant playlists on YouTube, ordered in roughly difficulty / relevance. Loosely start at the top, but don't be afraid to jump around. Some are only very tenuously related, but in my opinion they all have some value.

Gilbert Strang - Linear Algebra

Gilbert Strang - Calculus Overview

Andrew Ng - Machine Learning (Gentle coursera version)

Mathematical Monk - Machine Learning

Mathematical Monk - Probability

Mathematical Monk - Information Theory

Andrew Ng - Machine Learning (Full Stanford Course)

Ali Ghodsi - Data Visualisation (Unsupervised Learning)

Nando de Freitas - Deep Learning

The late great David MacKay - Information Theory

Berkeley Deep Unsupervised Learning

Geoff Hinton - Neural Networks for ML

Stephen Boyd - Convex Optimisation

Frederic Schuller - Winter School on Gravity and Light

Frederic Schuller - Geometrical Anatomy of Theoretical Physics

Yaser Abu-Mostafa - Machine Learning (statistical learning)

Daniel Cremers - Multiple View Geometry

u/MerlinTheFail · 1 pointr/gamedev

This is really cool! Thank you.

&gt;A common question is whether the book is still relevant. After all it's over ten years old

I find that some old(ish) books can really hold some great significance, for example: Effective C++ and Clean code have both given me some brilliant tips on making better code. I'm also readingWrite Great Code. If you have any more books i'd love to see them :) Thank you, again.

u/Electrical_Circuit · 7 pointsr/gamedev

I play with C++ as a hobby. I'm very far from being even good at programming in this language, but I'll tell you what I've done so far.

I first read this book: Programming: Principles and Practice Using C++ (2nd Edition). This book is written by the very man who developed C++.

Now, I know it looks daunting since that book has about 1200 pages, but a lot of it can be skipped if it doesn't pertain to what you want to learn.

After reading that book and making a couple small programs, I decided that I would give SDL2 a try. SDL2 is a 2d graphics library that includes window management. I did this first since it has a lot of documentation on how to use the library, and you can usually google something if you have problems. SDL2 can also be used in conjunction with OpenGL, so it is worth at least getting familiar with the library.

After all of that (at this point, for me, it had been about 2 months of off and on practice), I finally googled how to learn OpenGL. I followed some tutorials and tried to make some programs, but I learned that OpenGL was way over my head. I was able to get a few small programs running. There was one program I made that procedurally generated terrain, but I learned that OpenGL really isn't necessary if you want to JUST make a game.

When using OpenGL there is a lot of code that you will use over and over again, resulting in you sort of developing your own makeshift scene manager. You'll also want to learn how to program shaders, I haven't even done this yet, but this doesn't only apply to OpenGL. You'll probably want to learn how to program shaders no matter what.

So, after dealing with OpenGL and its steep learning curve I decided to give some rendering libraries a try, and this has been the best course for me to take. Here's a list of rendering libraries. I use Irrlicht because it is relatively lightweight, easy to use, and setup. Irrlicht isn't really updated too often so you won't get the latest features.

If you really want to learn OpenGL then this is the tutorial I followed: Link. It even has information on how to use SDL2 with OpenGL. This will get you started at least.

As for the IDE I use, Netbeans. This is mainly for Java, but it works well for C++. There are all kinds of IDEs you can use, just search around Reddit for other people's opinions of what they like.

I hope I helped! Ask me any questions you have and I'll try to answer them, just note, I'm not even close to a professional developer. I just like to program and play with graphics!

EDIT: Oh yeah, if this makes any difference to you, I did all of this on a Linux distro.

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 &amp; 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&amp;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 &amp; 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/replicaJunction · 11 pointsr/PowerShell

Learn PowerShell in a Month of Lunches is one of the most widely-recommended books on starting PowerShell. I'd recommend following along and physically typing commands in to see what happens - don't just read it.

Alternatively, if you've got the time, one of the most comprehensive introductions is the Microsoft Virtual Academy course on PowerShell 3.0. Don't worry - even though PowerShell 5.0 has been released, this is still very relevant information. It's long - almost 8 hours of videos - but these guys know what they're talking about and they explain it quite well.

Beyond that, check out the resources in the sidebar of this sub. There are a couple other intro books and guides, as well as a lot of script resources to look at.

Finally, once you have a feel for what the language is, the best way to discover what the language can do is to find something you already do a lot, and figure out a way that PowerShell can automate that process. It sounds like your senior engineers have some examples of this already, but don't be afraid to expriment. I have to produce a lot of Excel reports, so the PSExcel module for PowerShell lets me automatically create those reports.

Hope that helps!

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/keetohasacheeto · 2 pointsr/CompTIA

The CompTIA A+ All in one exam book is what helped me when I took the older versions (https://www.amazon.com/CompTIA-Certification-Guide-220-901-220-902/dp/125958951X/ref=sr_1_1?ie=UTF8&amp;amp;qid=1479940713&amp;amp;sr=8-1&amp;amp;keywords=comptia+a%2B) It's $35 for it new, but if you can find a used copy for cheap, go for it. You'll want to supplement your learning between the Professor Messer videos (which are free) with a good certification book such as the one I mentioned.

Since it is a 2-part exam, this will mean you will need to purchase 2 exam vouchers. I know usually on Professor Messers website, he will have discount codes you can use to take off a bit of the cost towards the voucher. The vouchers are what really make it pricey, which is why I strongly urge that you really make sure you are ready for the exams before you go and take them since they are not refundable.

Congrats in advance on having a kiddo and good luck with your studies. This subreddit is pretty great to ask questions and get studying advice.

u/Murloh · 3 pointsr/electronics

I picked up Make: Electronics and so far it has been very insightful. It walks you through doing real world examples while introducing some basic theory. It is all hands on which I like a lot. One caveat is that you need to also purchase all the components and tools. They sell 2 ready made component kits from Makershed.com but you can get the components cheaper utilizing different sources like mouser, jameco, even radio shack.

I also picked up a nerdkit (www.nerdkits.com) and it has been a great intro into microcontrollers. The documentation and support those folks provide are truly second to none. AWESOME community. Once I complete the Make Electronics book, I will be going full steam ahead with seeing how far I can get with MCUs.

And then, it will be on to exploring some robotics for me. If you are like me, be careful that you don't get bogged down with theory only. Back in my teens, I really wanted to explore electronics and read all I could on theory. Which was great and all, but also very very dry. Yes, Ohm's law is critical to know. However, making the leap from theory to practice will be equally as critical and will ensure you see how to really apply the theory you are learning.

u/pm_me_your_logs · 2 pointsr/cpp_questions

Hey, I highly recommend checking out the code academy courses on programming. At the level you're at, pretty much starting with any language will be beneficial since most of the beginning concepts are universal.

https://www.codecademy.com/

C++ has a larger learning curve past the beginner stage than other languages (in my opinion). It's a wonderful and extremely powerful language but memory management concepts can be challenging for a large majority of learners.

If that doesn't deter you, then you may find this book useful. I've used quite a few C++ books in college and this one was my favorite. Once you feel comfortable with object oriented design with class building, dynamic memory allocation, basic generic programming and basic data structure then I cannot recommend enough:

effective C++

You can definitely find a PDF of that if you just google the ISBN number and "pdf"

Coding is so much and it can really take a lot of time to finally make anything practical so patience is also incredibly important. Also, you must acknowledge and accept that you will NEVER know everything you want to know. You will learn new things all the time and you will work with people who think they know everything. Those are the ones who know the least, trust me.

u/proverbialbunny · 0 pointsr/cpp_questions

Someone might recommend better but The C++ Programming Language has been well received as a modern introductory C++ book. You might want to consider starting with that. Also, picking an IDE can make life easy, but isn't a requirement. Of the IDEs to choose from: CLion is popular but costs. I think Visual Studio is popular, but I believe it costs too (Not to be mistaken with VS Code). Qt Creator is pretty popular as is KDevelop. Both are free.

u/timlepes · 1 pointr/linuxadmin

I few years ago my youngest brother got his first IT job, and he fell right into an admin role. He too is very sharp. I bought him the following books as a gift to get him started...

The Practice of System and Network Administration, SecondEdition - a few years old but has lots of fundamentals in there, still well worth reading. Hoping for a third edition someday.

Tom Limoncelli's Time Management for System Administrators

I see others have recommended this great book, and I wholehartedly agree: UNIX and Linux System Adminstration, 4th Edition. I was sad when Evi's ship was lost at sea last year. :-( You could tell she loved sailing old wooden ships... just look at the cover. A great loss; she did so much for our community.

Additionally, I will second or third anyone recommending works by Brendan Gregg. I got the Kindle version of Brendan's Systems Performance: Enterprise and the Cloud. I really like this book. It was written to be a good foundational book for the next several years. I am planning to get a hard copy version too. While you're at it, check out these links...

Brendan Gregg:
http://www.brendangregg.com/
http://www.brendangregg.com/linuxperf.html
https://github.com/brendangregg/perf-tools
http://lwn.net/Articles/608497/
http://www.brendangregg.com/USEmethod/use-linux.html

Tom Limoncelli:
http://everythingsysadmin.com/

Introduce him not only to books, but online resources and communities like /r/linuxadmin :-)

Cheers!

u/SharkyMarksworth · 1 pointr/web_design

I can code HTML5 and CSS3 pretty well, honestly it's really easy for me now. - Once you get the hang of them look at a couple of frameworks - I have used Bootstrap and Skeleton and putting them on a resume is an easy +1.

The biggest thing that has helped with Javascript for me is game development, it's really fun and you have to have a decent understanding of javascript to make a playable game, it also gives you an opportunity to work on a bigger project. (thousands of lines of code) So you can get a better idea of how the overall layout mechanics of Javascript work. - So I would recommend making some simple games using just HTML5 canvas and vanilla Javascript with no libraries.

Books I would Recommend --


  1. http://www.amazon.co.uk/HTML-CSS-Design-Build-Sites/dp/1118008189

  2. http://www.amazon.co.uk/JavaScript-JQuery-Interactive-Front-end-Development/dp/1118531647


  3. http://www.amazon.co.uk/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742

    Youtube Channels

  4. learn.codeAcademy - for Jquery, Modern tools professionals use
  5. PHPacademy - for PHP, and some other stuff
  6. DevTips
  7. Jesse Warden - ( this guy has a GREAT javascript series, I would start with that for Javascript)

u/jhaddix · 5 pointsr/netsec

Hi Pandas_sniff! (love the name) I’m a firm advocate of the Web Application Hacker’s Handbook. I think if you look at the reviews for version 2 i’m probably one of the featured ones. It really is all encompassing for most of what application security testing should start out as. It does suffer from being a textual reference though (a snapshot in time), so I also commonly recommend learning from the OWASP Testing Guide v4 as it has frequent wiki-like updates. I could spend all day talking about resources for learners! There are some excellent (free) videos by Jeremy Druin on using Burp Suite and application testing, I absolutely love Pentesterlab.com and all of their exercises, and Sam has written a very good guide on getting started in bounty work

As for how effective these resources are “out of the gate” i think they are tremendously helpful. For example, using the above resources i’m sure any apt student of them could identify IDOR’s or basic injections. Over time these skills become second nature and free up the tester to focus on newer, cutting-edge hacks/technology. Hope that answers the question =)

u/ABC_AlwaysBeCoding · 1 pointr/ProgrammerHumor

If I could make a recommendation based on time-tested experience, I'd recommend following the advice of 2 books, Refactoring: Improving The Design Of Existing Code and Growing Object-Oriented Software, Guided By Tests.

Basically, if you are committed to this codebase, you can rewrite bits and pieces of it (while covering them with tests to make sure you didn't break any functionality) and slowly migrate/transform the code to a point where it's more maintainable.

Of course, if you have a manager who you can't convince this is worth spending time on, you might point them to a resource like this about technical debt or perhaps this one to bring it down to dollars and cents (which every manager understands).

I'd also recommend reading this great piece by John Carmack (of id's DOOM fame, and now VR... He's a highly respected OO C programmer, I'm sure you've probably heard of him) about his excursion into 1 month of programming using a "functional style" (it's applicable to any language, actually, including PHP). It has great quotes like this one: "No matter what language you work in, programming in a functional style provides benefits. You should do it whenever it is convenient, and you should think hard about the decision when it isn't convenient."

I promise you that if you can follow some or all of the knowledge I've linked you to, your job will become both less frustrating and more enjoyable (down the line).

u/IWantToBreakFI · 6 pointsr/financialindependence

Make sure you study algorithms! As a hiring manager the biggest differentiator I see between successful self-taught people and unsuccessful ones is that the successful people care about and learn about algorithm &amp; data structure design.

Sure with a language like Java you'll be dealing with the nitty gritty less because it's managed, but it's still incredibly useful and applicable, and will make you a better developer to work with.

Personally, I love this book: https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693

It also has really great interview prep questions when you're getting to that stage.

u/yourfriendlane · 1 pointr/sysadmin

&gt; what schools offer courses where I can finish within a few months?

The School of Hard Knocks. Read a chapter a night and work through the exercises. Please don't go to school for a year and throw away a bunch of money to get an A+.

&gt; seeing what I am good at and improving on within 2 years. I have three different areas where I might be able to get into (pharm, business, computer) and the experience and knowledge as well as room for improvement and the speed of getting really good at one of them and finding whether I enjoy one of them or not.

This is exactly what I advised you not to do. Deferring this decision for another two years is the easy way out, and it's going to hurt you big time.

For the sake of argument, say you do end up in IT. You're 25 years old. Most of your peers entered the workforce 2-3 years ago, so they already have a considerable amount of professional experience compared to you. Extend that out another two years, and you're already half a decade behind everyone else right out of the gate. On top of that, most of those people have had a lifelong passion for technology and spent their formative years immersing themselves in the subject matter so that when the time came to start their careers, they were already ahead of the curve.

How do you intend to win the race by delaying your start even further than you already have? You're already behind, and the answer is not to sit at the starting line and debate what brand of running shoes are most comfortable while your opponents begin lapping you.

If you start now and focus exclusively on one field, you still have a chance to catch up. If you keep waiting around and waffling for much longer, you'll be left in the dust. This isn't just true in IT - it applies pretty much universally in the professional world.

u/cello_bitch · 3 pointsr/Portland

I'M REALLY SORRY YOU'RE HAVING A HARD TIME.

NOT SAYING YOU HAVEN'T TRIED, I COMPLETELY BELIEVE YOU. BUT IF YOU BRANCH AWAY FROM THE CODE-BOOTCAMP/WEB-DEV ARENA THERE IS CURRENTLY A MASSIVE SHORTAGE OF PEOPLE THAT CAN ACTUALLY PROGRAM. COMPANIES LIKE NIKE FLY IN DEVELOPERS FROM ALL OVER THE COUNTRY STRAIGHT OUT OF COLLEGE.

WE INTERVIEW SO. MANY. FUCKING. PEOPLE. THAT DON'T KNOW THE ABSOLUTE BASICS.

PUSH THE "WRITING SOFTWARE IN PYTHON" ASPECTS OF YOUR PAST EXPERIENCE AND DOWNPLAY ANY HTML/CSS/JAVASCRIPT STUFF. SPEND A MONTH LEARNING THE BASICS OF JAVA. THEN SIGN UP FOR LEETCODE AND CODERBYTE (FREE VERSIONS) AND SOLVE A PROBLEM A DAY FROM EACH, FOR 30 DAYS. IF YOU DON'T KNOW HOW, GOOGLE IT UNTIL YOU DO. LEARN THE ABSOLUTE BASICS OF ALGORITHMS, EFFICIENCY, AND RUNTIME COMPLEXITY THROUGH COURSERA, OR A BOOK LIKE THIS, AND ADVERTISE THE SHIT OUT OF IT ON YOUR RESUME. THIS IS WHAT THEY'RE LOOKING FOR.

SHOW UP LOOKING LIKE A NORMAL HUMAN, YOU'LL BE ABLE TO ANSWER QUESTIONS ABOUT THE EFFICIENCY OF CERTAIN ALGORITHMS OVER ANOTHER AND WHEN THEY ASK, YOU WILL SOLVE A WHITEBOARD PROBLEM THAT WILL LIKELY BE A WORD-FOR-WORD COPY OF ONE OF THE PRACTICE PROBLEMS YOU SOLVED ON LEETCODE. DO THIS AND I GUARANTEE THEY WILL JUMP YOUR BONES TO GET YOU ON THE TEAM. THAT'S WHERE THE MONEY AND MARKET IS RIGHT NOW, AND THERE ISN'T ENOUGH PEOPLE TO FILL IT.

u/DaNPrS · 5 pointsr/sysadmin

Fuck that. You want to learn the newest shit, not some old antiquated OSs that your company just happens to use atm. Yes I'm being very blunt, you will have a better career if you do so.

  1. Yes. Powershell in a month of lunches and /r/Powershell . If you're gonna do Windows you need this.

  2. No. If you're gonna learn Windows, learn 2012R2. I'm running the 2016 version at home already in test. MCSA atm is for 2012R2, so stick with that. No reason to focus on 2008. The menus are very similar, functions are identical only 2012R2 has some added capabilities and some different ways of implementation. Learn the new way and you'll have better career opportunities. Including where you work now - what happens when they want to update to 2012R2 and you already know that OS?! Don't think of the present, think of the future.

  3. Not familiar with it.

  4. I run it at home for personal use. It's ok, wish I could join it to the domain and it'd stick/be stable at it. For storage is alright. I would not feel comfortable implementing it for a large business though. Small sized, maybe. Great to learn iSCSI and shares and BSD I suppose.

  5. Sure. Edgerouter Lite or even PFSense are great home routers. A coleague runs PFSense as a VM btw. /r/Ubiquiti /r/PFSENSE

  6. Not familiar with it.

  7. Get VMWare 6.0 (Look to the future)

    Also note that Hyper-V is free if you'd like to play with that. You can get that and other Windows Evaluation OSs here.

    I run a Hyper-V cluster with two Lenovo M93 systems, a VMWare 5.5 hypervisor on a TS140, and FreeNAS on a custom machine. My network is all Ubiquiti, ERL, ES Lite, 2x UAP-AC.


u/_Skeith · 2 pointsr/ITCareerQuestions

Certs will always be more reputable in the IT Sec field then a degree (up until you want to get into a management position, then the MS would be worth it) but after your BS go directly for certs.

If you want to get into Web App Pen Testing then I suggest you pickup the basics of networking, how Packets work, how they are transmitted across the internet. OSI Model, HTTP POST, GET, PUSH, DELETE , how Switches and Routers work as well as how backed server functions on Linux such as Ngix, Apache, how does PHP work.

From that you basically need to learn SQL, HTML, PHP, JavaScript, Python (or Ruby) and some C along with basics of Assembly if you want to learn how to make Exploits.

I suggest you pick up the Web Hackers Handbook. It's a great start to learning how to hack websites.

Also learn the OWASP Top 10.

Take in some knowledge on Metasploit Since it goes over basics of using the tool. Also learn how to use Burp Suite since it's going to be your tool of choice for testing websites, and Nmap as well, since it will be your scanner for checking other domains of the website, etc, etc.

Start practicing at home. Build a small lab with Kali installed on a VM.

You can practice hacking the Damn Vulnerable Web App

Check out VulnHub for more resources on vulnerable VMs to practice hacking.

And also follow Pentest Lab Bootcamp to learn the basics of web app hacking as well. I highly suggest you follow this outline as it will teach you the basics of Web App Hacking and will also provide you with VM's to practice SQL Injection, XSS, CSRF, etc.

As for certificates, since you are doing Web App Pen Testing don't go with the CCNA or CCNA Security, since those are mainly associated with Network Security. You need to understand how networks work, yes, but you don't need to have a deep end knowledge of it.

I suggest you go for Security+ since it will teach you security basics and securing firewalls, routers, switches, etc. After that pursue the OSCP and OWSE from Offensive Security as they are highly regarded in the Pen Testing field.

You might need to also take the CISSP since some companies will require you, but by then you should be able to work for a firm and get the CISSP over time.

Hope this helps, cheers!

u/InadequateUsername · 4 pointsr/ITCareerQuestions

The A+ is an entry level cert, it's only "a joke" because it's entry level, the same way a HighSchool diploma is. If you can find an employer who can pay for it, great! (I did). IMO it gives you a good experience in how these certs work. Everyone recommends Professor Messer. I would recommend visiting /r/CompTIA to see what questions people have and what they struggled with. The book I read did not prepare me for a question regarding how to repair the Masterboot record (bootrec /FixMbr). But reading a book can be good too, Mike Myer goes but further in depth then is needed imo, but learning more is never an issue. Printers will be asked, I didn't think so but I messed up on them (I was asked about impact printers and had to guess).

I think you're looking at an old practice test as I took the 802 and don't remember anything about floppies. There were questions about Windows XP and a general question about IOS 6. The questions they ask are usually pretty general. They don't ask you about interrupts, maybe the basics of what a driver does, but I don't believe it would go further into it. Maybe a question relating to using a new driver to fix a problem. My book went indepth on how a processor communicates with RAM and vice versa. As well as HDD sectors vs tracks (was too indepth, and those Q's never asked).

A+ is very general, Network + is specific to networking, but again pretty general and entry level. If it helps you get your foot in the door, it's not "useless". A+ and Network+ would create a good base to start moving up from. The big thing is that they need to be renewed (tests retaken) every 3 years. So maybe try to aim for having a higher level cert in 3 years time so you don't need to renew your A+.

So for studying, Mike Myers Book
and Professor Messer would be good material. I just read the book and it was incredibly vague compared to what was on the test (general knowledge mostly). But it comes with a practice CD too.

also, everything /u/VA_Network_Nerd said.

u/a_bearded_man · 4 pointsr/AskEngineers

That is an incredibly broad question. Without knowing what you've already studied, it's hard to recommend things. Most of the aerospace and mechanical engineers I know use pre-packaged programs rather than writing their own scripts, etc.

Artificial intelligence might be the best one, though. Russel and Norvig is the standard textbook: https://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597

The plus side to learning about AI is that it is not really programming intensive - it's logic and statistics intensive.

If you want to go the programming route, it gets a little hairier. The reason is that advanced systems designs will take a lot of initial classes just to get you to a level where you are comfortable programming and can then think about design and program flow.

Take an intro course. I learned programming with C / C++ and Matlab. Recommend those since it's easier to blow your foot off when programming. Once you understand how to design programs, what functions are, how program control can be passed off, move over into Python (much easier to pick up and run with and much better supported).

You might also benefit from a databases or Big Data class due to the amount of data generated from an aircraft.

Regular expressions and scripting is another option. But that's good for anyone.

u/just-an0ther-guy · 2 pointsr/sysadmin

In that case...
You may want to wait for the 5th edition of UNIX and Linux System Administration, as it should release near the end of this year and they don't release new versions that often.

A good way to get started building a college library is to see what the curriculum for the school is and what books are required by professors. Often other colleges will list their book recommendations for the courses online to get an idea of where to start looking. (I know my school has an online bookstore that lists the books for each course and is open to the public)

At least one or two good books in each of those categories, to get a rough idea to start:

u/ixAp0c · 2 pointsr/learnprogramming

Yes, it's possible, especially with something like Amazon where the syntax is relatively simple. If you view the HTML source for a page like this, and press CTRL + F (find/search page) and search for the price of the item ($59.87 in this case), you'll see that the price is in the HTML tag:

&lt;span class="a-size-medium a-color-price offer-price a-text-normal"&gt;$59.87&lt;/span&gt;

With a simple script in Python you could just pull the HTML from the web page, and parse the text for that sub-string and return the value after the substring. This script will read the HTML from the site:

!/usr/bin/env python

import urllib.request<br />


page = urllib.request.urlopen("http://www.amazon.com/item&quot;)
text = page.read().decode("utf8")

print(text)

You just need to add in a few lines to make it get the value for the item. You can use string indexing and slicing to pull the value out of the HTML tag, by doing something like:

priceStartOffset = text.find('"a-size-medium a-color-price offer-price a-text-normal"&gt;$' # Find string index where price starts
priceStart = priceStartOffset + 1 # Index where price begins (numbers)
priceEnd = priceStart + 4 # Index where price ends (other ways to implement, this is simple way)
price = text[priceStart:priceEnd] # Pull price substring out of HTML by using slicing
print(price) # Display the price

Once you have the price value you can do whatever you want with it, print it to the screen, save it in a file for later use/computation, etc. Note that this is just a basic example of pulling some data from an HTML page, the logic that you implement on that data is up to you.

If you want the program to collect the price every X amount of seconds, you could put the code that gets the price in a loop (a while loop would be good in this case), with something like the 'time.sleep(seconds)' at the bottom of the loop block, so you aren't collecting thousands of the same price value every minute.

Since you have little to no experience coding (and might not really understand any of what I just said unless you're already coding), I'd recommend you read a book like Head First Programming, which goes over the basics of programming using Python 3 (but the concepts can be applied to any language, Python was simply chosen for the examples).

u/VampireCampfire · 1 pointr/learnjavascript

If you are just starting out or a beginner, it is really hard to learn from youtube videos. It's easy to falsely equate understanding a concept while watching a video with knowing how to implement it from scratch using your own hands. Videos become much more beneficial when you are trying to understand specific, advanced topics later on in your learning process.

There are definitely almost too many resources to learn JS. Because of this, I would recommend getting away from all of them because they will distract you and leave you overwhelmed. Instead, pick up a good textbook and go through it start to finish while practicing what you learn as you go along. A book I highly recommend is Javascript and jQuery. A lot of books teach you javascript without context, but this book is very geared towards actual implementation of JS to frontend development and building websites. As you read the book, don't be afraid to start creating your own websites on the side. Across the board - and I think I can speak for all advanced developers- creating your own projects from scratch is hands down the best way to burn the skill into your brain. Why? Because when you have a problem, you can't just immediately get the answer. You have to search around and try different things. You essentially spend more time with the problem and therefore will remember how to solve it next time you come across it. This is called learning. But you need the fundamentals first, which is why I recommended the textbook.

With that being said, a resource that combines videos with writing code that I really recommend is Codeschool. However, it requires a monthly payment. The benefit of that payment is that it will incentivize you to follow through, which is extremely important at the beginner level. When you are using free resources, you tend to get distracted and change to another one because they are unlimited with no switching costs.

I would advise against spreading yourself too thin by trying to tackle things like the MEAN stack (which has very specific use-cases) , postgresql, MVC and RestfulAPIs. Learn the fundamentals first, and then once you become more advanced you will naturally start learning those other things as you need them. You can only really learn those topics by implementing them in a project anyway.

To recap:

    1. Learn the fundamentals via one resource
    1. Stick with a resource you choose from start to finish
    1. Use your learned knowledge to build your own websites/projects
u/aLogicalOperator · 2 pointsr/learnprogramming

First off I messed with a lot of languages before I think I really grasped the basics. I'll note that I used some Qbasic and Lua before starting my CS degree but I don't think they taught me good fundamentals because they are a little more "simple" and left me confused looking at lower level languages which is pretty much anything else.

I just started my CS degree recently and finished the first class which was in C#. I felt like this language really gave me a better grasp on the fundamentals.

More importantly than the language though I'd say get yourself a good book. For my C# class we used this book which is really good but kind of expensive. If you are interested in C++ many people recommend C++ Primer or The C++ Programming Language.

In taking my C# class I realized I thought I knew a lot about the basics of programming but actually didn't fully understand some very basic stuff, even things I had used a lot before.

u/Breaking-Away · 1 pointr/Python

There are plenty of good books, but the obvious one to mention is The C++ Programming Language 4th Edition. I'm still a relative novice at C++ but the book has been recommended by a lot of people much more versed in C++ myself and it is written by Creator and maintainer of C++.

Also, the book is up to date. Writing good idiomatic C++ has changed significantly over the years and so a lot of older resources will not accurately teach modern best practices.

I also really like his intro chapter. He does a really good job of explaining the best "mindset" to use when learning C++, the reasons he initially wrote the language and how it has grown from where it started to where it is now.

u/seanfast · 1 pointr/cscareerquestions

im not sure what you do with CIS, but im guessing sysadmin type stuff? if that doesnt interest you and the job listings dont either, look into a straight BS in CS degree. you can probably transfer some credits. check out an algorithms book like this one (google it for the pdf) http://www.amazon.com/Algorithms-4th-Edition-Robert-Sedgewick/dp/032157351X or this one http://www.amazon.com/Introduction-Algorithms-Edition-Thomas-Cormen/dp/0262033844 and if they interest you check out CS. take some courses for free on codecademy and see if web programming interests you. theres a million ways to go online and check out other cs related avenues that might be more for you. explore cs classes on your campus after reading the course descriptions, audit a class for free. sign up and then leave during drop add. see how things sound. check things out. good luck!

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/guifroes · 2 pointsr/learnprogramming

Interesting!

Looks to me that you can "feel" what good code looks like but you're not able to rationalise it enough for you to write it on your own.

Couple of suggestions:

When you see elegant code, ask yourself: why is it elegant? Is it because is simple? Easy to understand? Try to recognise the desired attributes so you can try to reproduce on your code.

Try to write really short classes/methods that have only one responsibility. For more about this, search for Single Responsibility Principle.

How familiar are you with unit testing and TDD? It should help you a lot to write better designed code.

Some other resources:

u/ickysticky · 2 pointsr/AskProgramming

Refactoring: Improving the Design of Existing Code is ok. I don't know if it is as amazing as the reviews think, but it is pretty good. It is a little Java centric.

You really don't see many blog posts/internet articles about refactoring. It almost sounds like you are looking for help with design, refactoring is just the process of how to reach a better design.

The most important part is to write unit tests to make sure that you preserve the required behavior during refactoring.

u/pixel1 · 2 pointsr/IWantToLearn

I don't know if you're specifically interested in learning about the security and security flaws of web apps specifically, but I would definitely recommend The Web Application Hacker's Handbook as it's an amazingly thorough guide on vulnerabilities.

Typically you start testing sites by using a security toolkit underneath your browser, such as Burp Suite. I don't do much of this stuff myself so hopefully this'll get you started.

Also /r/howtohack might be helpful, along with this thread to find some good hacking practice (DONT hack sites you don't have permission for)

Good luck!

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/kusumuk · 2 pointsr/sysadmin

hmmm...I grew out of that position this past year. It was similar in scope to yours. In your position I highly recommend going desktop infrastructure. Studying for it will allow you to at the very least have a clear understanding of the latest technology available to you for architecting desktop solutions. However, it's not enough to know just that. Here's some advice:

  • If you don't have a whiteboard by your desk, get one.

  • learn scrum or some kind of other project management methodology and at first apply it to yourself, then apply it to everyone else within your domain. Hold your bosses to the same standards.

  • learn ITIL and start using the terminology. You don't have to adhere to all the standards, either. Furthermore, it helps you understand your role in IT as part of the enterprise as a whole, and it helps you understand how to architect your IT shop using best practices.

  • If you don't have a testing environment, make sure your department has one. Microsoft MSDN subscriptions allow for as rich a testing environment as you need for as little as 700 bucks a year. Most subscriptions also come with free courses as well. Furthermore, you can buy an r900 hexacore quad socket server with 128gb of ram for under a grand. Plenty of hardware for a competent testing environment.

  • Learn powershell. Don Jones has written books and made training videos showing you how to learn powershell. It's a powerful tool. Learn the .net classes that it can use. If you look up the MSDN writeups for the C# versions of the classes, they are pretty darn close to the powershell version of it.

  • Everything you learn in your studies, test it out. Learn it. Nurture your test environment. Get intimate with the checkpoint feature in virtualization. Get cozy with it.

  • As soon as you possibly can, but only after you've gotten the above fundamentals down, learn system center. It's complex, but wonderful. It'll put you on a whole other level. That will guarantee you a job.
u/inequity · 2 pointsr/gaming

The assembly is rather light at the beginning. In your first year you have to write some assembly to control a little car with infrared sensors, but it's really easy. Later on though, there are pretty interesting classes on assembly which are pre-reqs for classes on optimizing/debugging. Also it never hurts to learn more. But this definitely isn't something I'd be too worried about coming in.

After K.N. King's book, we don't really cover many more C books. But Kernighan and Ritchie's C Programming Language is a good thing to read.

In terms of C++ books we cover, it's a little weird. For one class, we needed C++ Primer and another we needed C++ Primer Plus. We've also needed Algorithms in C++ by Robert Sedgewick and a couple others. However, most of our classes don't have "required" textbooks, just recommended ones. If you send me a message I can compile a list of the recommended ones from my courses this far.

Personally, I'd highly recommend all of Scott Meyers' books, such as Effective C++, More Effective C++, and Effective STL.

u/wrouzhul · 8 pointsr/learnprogramming

Ooooh you're a super new :)

Many people hate it but w3schools can get you started:

u/loveandbs · 3 pointsr/PowerShell

As a beginner (still am), I have found the easiest way to learn is to just dive in using Powershell for any tasks that you do during your normal day (especially the repetitive ones).

With that said, I have found it highly beneficial to use a couple resources:

  • Subscribe to this Reddit /r/PowerShell
  • Subscribe to "Hey, Scirpting Guy!" blog
  • Buy the book Powershell in a Month of Lunches - A Youtube Channel also exists
  • Search for Powershell related courses on Microsoft Virtual Academy
  • Head on over to PowerShell.org and go exploring
  • Visit the TechNet Script Gallery. Study and understand any available, high-rated scripts.

    To be honest, the most important tip in my opinion to learn how to use PS is the get-help command. This will teach you how to use just about every command out there minimizing most questions that you are looking to ask. A second tip: Learn what it means to "Pass by value" and "Pass by Property Name." This will help you immensely when combining commands using the pipeline.

    Quick warning: Powershell will quickly get addictive. Also, it is a community where people enjoy sharing and giving back.

    Last note, I swear. Learn shortcuts. It will save you a HUGE amount of time (i.e.like hitting esc on your keyboard to clear the line.)
u/dmazzoni · 2 pointsr/learnprogramming

Artificial neural networks are great, but keep in mind that they're just a means to an end. The best way to learn them is to go through a good textbook or online course where you'll try them out on good examples that have been designed specifically to be good for beginners.

To a professional, you don't start with the tool and search for a problem - you start with a problem and figure out the best tool. Sometimes that tool is neural networks, but probably 99% of the time it's not. Even when the right tool is "machine learning", there are a lot of machine learning techniques other than ANNs.

As a beginner, the best thing you can do is start by learning about machine learning in general. You can't properly use ANNs if you don't understand the principles of machine learning in general, which is what the book or course I linked above will give you.

&amp;#x200B;

u/samort7 · 257 pointsr/learnprogramming

Here's my list of the classics:

General Computing

u/ebenezer_caesar · 2 pointsr/bioinformatics

Chapter 7 of Chris Bishop's book Pattern Recognition and Machine Learning has a nice intro to SVMs.

Here is a list of papers where SVMs were used in a computational biology

&gt; Gene Function from microarray expression data
&gt;
&gt; Knowledge-based analysis of microarray gene expression data by using support vector machines, Michael P. S. Brown, William Noble Grundy, David Lin, Nello Cristianini, Charles Walsh Sugnet, Terence S. Furey, Manuel Ares, Jr., David Haussler, Proc. Natl. Acad. Sci. USA, vol. 97, pages 262-267
&gt; pdf
&gt; http://www.pnas.org/cgi/reprint/97/1/262.pdf
&gt;
&gt; Support Vector Machine Classification of Microarray Gene Expression Data, Michael P. S. Brown William Noble Grundy, David Lin, Nello Cristianini, Charles Sugnet, Manuel Ares, Jr., David Haussler
&gt; ps.gz
&gt; http://www.cse.ucsc.edu/research/compbio/genex/genex.ps
&gt;
&gt; Gene functional classification from heterogeneous data Paul Pavlidis, Jason Weston, Jinsong Cai and William Noble Grundy, Proceedings of RECOMB 2001
&gt; pdf
&gt; http://www.cs.columbia.edu/compbio/exp-phylo/exp-phylo.pdf
&gt;
&gt; Cancer Tissue classification
&gt; from microarray expression data, and gene selection:
&gt;
&gt; Support vector machine classification of microarray data, S. Mukherjee, P. Tamayo, J.P. Mesirov, D. Slonim, A. Verri, and T. Poggio, Technical Report 182, AI Memo 1676, CBCL, 1999.
&gt; ps.gz
&gt; PS file here
&gt;
&gt; Support Vector Machine Classification and Validation of Cancer Tissue Samples Using Microarray Expression Data, Terrence S. Furey, Nigel Duffy, Nello Cristianini, David Bednarski, Michel Schummer, and David Haussler, Bioinformatics. 2000, 16(10):906-914.
&gt; pdf
&gt; http://bioinformatics.oupjournals.org/cgi/reprint/16/10/906.pdf
&gt;
&gt; Gene Selection for Cancer Classification using Support Vector Machines, I. Guyon, J. Weston, S. Barnhill and V. Vapnik, Machine Learning 46(1/3): 389-422, January 2002
&gt; pdf
&gt; http://homepages.nyu.edu/~jaw281/genesel.pdf
&gt;
&gt; Molecular classification of multiple tumor types ( C. Yeang, S. Ramaswamy, P. Tamayo, Sayan Mukerjee, R. Rifkin, M Angelo, M. Reich, E. Lander, J. Mesirov, and T. Golub) Intelligent Systems in Molecular Biology
&gt;
&gt; Combining HMM and SVM : the Fisher Kernel
&gt;
&gt; Exploiting generative models in discriminative classifiers, T. Jaakkola and D. Haussler, Preprint, Dept. of Computer Science, Univ. of California, 1998
&gt; ps.gz
&gt; http://www.cse.ucsc.edu/research/ml/papers/Jaakola.ps
&gt;
&gt; A discrimitive framework for detecting remote protein homologies, T. Jaakkola, M. Diekhans, and D. Haussler, Journal of Computational Biology, Vol. 7 No. 1,2 pp. 95-114, (2000)
&gt; ps.gz
&gt; PS file here
&gt;
&gt; Classifying G-Protein Coupled Receptors with Support Vector Machines, Rachel Karchin, Master's Thesis, June 2000
&gt; ps.gz
&gt; PSgz here
&gt;
&gt; The Fisher Kernel for classification of genes
&gt;
&gt; Promoter region-based classification of genes, Paul Pavlidis, Terrence S. Furey, Muriel Liberto, David Haussler and William Noble Grundy, Proceedings of the Pacific Symposium on Biocomputing, January 3-7, 2001. pp. 151-163.
&gt; pdf
&gt; http://www.cs.columbia.edu/~bgrundy/papers/prom-svm.pdf
&gt;
&gt; String Matching Kernels
&gt;
&gt; David Haussler: "Convolution kernels on discrete structures"
&gt; ps.gz
&gt; Chris Watkins: "Dynamic alignment kernels"
&gt; ps.gz
&gt; J.-P. Vert; "Support vector machine prediction of signal peptide cleavage site using a new class of kernels for strings"
&gt; pdf
&gt;
&gt; Translation initiation site recognition in DNA
&gt;
&gt; Engineering support vector machine kernels that recognize translation initiation sites, A. Zien, G. Ratsch, S. Mika, B. Scholkopf, T. Lengauer, and K.-R. Muller, BioInformatics, 16(9):799-807, 2000.
&gt; pdf.gz
&gt; http://bioinformatics.oupjournals.org/cgi/reprint/16/9/799.pdf
&gt;
&gt; Protein fold recognition
&gt;
&gt; Multi-class protein fold recognition using support vector machines and neural networks, Chris Ding and Inna Dubchak, Bioinformatics, 17:349-358, 2001
&gt; ps.gz
&gt; http://www.kernel-machines.org/papers/upload_4192_bioinfo.ps
&gt;
&gt; Support Vector Machines for predicting protein structural class Yu-Dong Cai*1 , Xiao-Jun Liu 2 , Xue-biao Xu 3 and Guo-Ping Zhou 4
&gt; BMC Bioinformatics (2001) 2:3
&gt; http://www.biomedcentral.com/content/pdf/1471-2105-2-3.pdf
&gt;
&gt; The spectrum kernel: A string kernel for SVM protein classification Christina Leslie, Eleazar Eskin and William Stafford Noble Proceedings of the Pacific Symposium on Biocomputing, 2002
&gt; http://www.cs.columbia.edu/~bgrundy/papers/spectrum.html
&gt;
&gt; Protein-protein interactions
&gt;
&gt; Predicting protein-protein interactions from primary structure w, Joel R. Bock and David A. Gough, Bioinformatics 2001 17: 455-460
&gt; pdf
&gt; http://bioinformatics.oupjournals.org/cgi/reprint/17/5/455.pdf
&gt;
&gt; Protein secondary structure prediction
&gt;
&gt; A Novel Method of Protein Secondary Structure Prediction with High Segment Overlap Measure: Support Vector Machine Approach, Sujun Hua and Zhirong Sun, Journal of Molecular Biology, vol. 308 n.2, pages 397-407, April 2001.
&gt;
&gt; Protein Localization
&gt;
&gt;
&gt; Sujun Hua and Zhirong Sun Support vector machine approach for protein subcellular localization prediction Bioinformatics 2001 17: 721-728
&gt;
&gt;
&gt; Various
&gt;
&gt; Rapid discrimination among individual DNA hairpin molecules at single-nucleotide resolution using an ion channel
&gt; Wenonah Vercoutere, Stephen Winters-Hilt, Hugh Olsen, David Deamer, David Haussler, Mark Akeson
&gt; Nature Biotechnology 19, 248 - 252 (01 Mar 2001)
&gt;
&gt; Making the most of microarray data
&gt; Terry Gaasterland, Stefan Bekiranov
&gt; Nature Genetics 24, 204 - 206 (01 Mar 2000)

u/UpAndDownArrows · 3 pointsr/learnprogramming

First time see that site, but I would recommend reading:

u/kangasking · 2 pointsr/programming

which books exactly, please guide me.

these ones?

Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)

Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 1st Edition

More Effective C++: 35 New Ways to Improve Your Programs and Designs 1st Edition

What is the difference between them? It seems effective cpp 3 is from 2005 and more effective cpp is from 1996. Is there a point in reading more effective cpp after reading the third edition of effective cpp?

Also, what do you think about C++ How to Program?

u/luenix · 3 pointsr/webdev

Does only coming from a sys admin background count as no prior experience to web programming? I just was given access to the static company site about a year ago and was tasked with updating it since then. Fast forward to about 5 weeks ago and I decided to teach myself WordPress + LAMP then LEMP. L(A/E)MP = Linux, Apache/Nginx ("Engine-X"), MySQL/MariaDB, and PHP/Python (bottle.py).

I knew PHP and Linux from system management of random servers at work and through consultations with my personal business.

If you're asking for advice on where to start, it seems that the current best practice is to go on codeacademy.com and accompany that work with the Jon Duckett books on at least front end stuff including HTML/CSS/JS and maybe some jQuery.

http://www.amazon.com/HTML-CSS-Design-Build-Websites/dp/1118008189/
http://www.amazon.com/JavaScript-JQuery-Interactive-Front-End-Development/dp/1118531647/

Cloud9 and GitHub are great first destinations for starting in development. You can go my route if you're feeling confident with system management and go for Amazon Web Services EC2 with a free (for a year!) micro instance that you can load with all kinds of stuff, including a basic Ubuntu server with LAMP (MySQL, PHP) that in-all takes less than an hour to get comfortable with and ready for a new page or even WordPress.

A significant amount of people here swear by laracasts.com as well once you're through the basic front end tech :)

u/Cuin-Manari · 1 pointr/technology

A book I have recently been recommended was "How to create a mind." Seems to have some bias, but has interesting takes on the subject.

I won't deny I'm fairly early on in my degree myself, but if you want what I've been using as supplementary material, here they are.

If you're looking for some code books, I suggest the big red book. That's pretty standard as the go-to Algorithms book. Fairly dry, but it the 4th edition has some good explanations of nice and efficient algorithms - plus, clean code.

Finally depending on your preferred language (I'm a C++ person myself) this book might have some relevance.

u/balefrost · 1 pointr/AskProgramming

You're right, they're different skills, and knowing how to use libraries effectively is really important. But I wouldn't shy away from algorithms. Knowledge of algorithms and data structures will enable you to solve problems that you might not otherwise think you can solve. I've spent a lot of time recently working with graphs and partially-ordered sets to solve a problem at work, but the problem would have been unsolvable if I didn't have the algorithmic and mathematical background. Algorithms and Data Structures are pretty fundamental to computer science.

If you want to get started with algorithms, a good textbook will help a lot. I know that "Algorithms" is well regarded. It certainly has good diagrams, though I find some of their choices about how to represent things in Java to be a little weird. The other popular one is "Introduction to Algorithms
"
, which is more comprehensive but probably not quite as approachable.

u/alex_kendall · 7 pointsr/compsci

The Mythical Man Month published 1975(!)

"Arguably the only classic book in our field"
----------------
Lot of good books listed here, but my advice is to read this book, and play around with some new tool (like git). Now that I think about it, learning git along with reading this book is actually perfect, because you'll learn how to use the tools that we have today that the author dreams of, and why they are so powerful and important.

Yes, this is the perfect break material: git and The Mythical Man Month. Short book too.

u/jesyspa · 1 pointr/learnprogramming

I should probably clarify what bothers me. I find that programming is a creative activity, and what while attention to detail is important, it's just as important to have a large-scale overview of what you are doing. You're going to have practical problems if you can't write an if statement correctly, but making the goal of the exercise to write an if statement doesn't sound much better to me.

In this regard, LPTHW reminds me of secondary school maths classes: you're shown how certain basic problems are solved, and then told to use that formula to solve more problems of the same style, perhaps with some variation. Yes, there will be people who can put these blocks together and see the beautiful structure that they add up to, and yes, learning how to plug numbers into an equation is easier than solving problems yourself. Still, it doesn't work well in mathematics, and I am sceptical of it in programming.

I by far prefer books like Invent With Python, where it is immediately clear that the things you learn aren't just features in isolation, and where the whole-program structure is emphasised. An even better book (though not about Python) is The C++ Programming Language; reading that truly gives the feeling of a coherent system. (Not to imply that it's a good first introduction to programming in general, but neither was it meant as one.)

TL;DR: Do what works, but if you're not making a project of your own, I'd consider starting on one.

u/hugh_person · 2 pointsr/DIY

Try r/electronics and maybe r/arduino. The communities there are great, but you need to give a clear description of what you are trying to do.

That said, Forest Mims III's Getting Started in Electronics has probably launched a million hackers, and you can find it at a better Radio Shack.

I also like the book put out by MAKE. It's the book I would have liked to have when I was learning electronics. It goes from licking a 9V battery to using common and useful ICs.

While both of these books will get you started with how electricity works, neither one covers microcontrollers. Buy an Arduino, or a BASIC Stamp, or whatever and just get started. There's tons of info online. And if you have questions or problems, the above subs have lots of smart and helpful people.

u/firefox15 · 3 pointsr/PowerShell

Okay, /u/kd9333, don't take this the wrong way, but have you considered brushing up on some POSH basics, maybe something like PowerShell in a Month of Lunches. You have been asking a lot of questions about this script (and general PowerShell questions) in the past few weeks, and honestly, some of your responses are literally you asking people to do 100% of the work for you, even after they point you in the right direction.

Many people are willing to help you learn PowerShell, but many of the questions are you asking are pretty basic, and they would likely be answered if you took the time to really learn the basics of the language. That, plus a few questions that look like homework make me question if this is just us doing schoolwork for you or if this is an actual question you need assistance with.

To your question, you don't need to type your date field as [datetime] when you send it to Out-File. It's already in that format. You will likely want to convert it to a string before hand using either a method or a format operator so that it is in the format you want.

u/ASquareDozen · 7 pointsr/SCCM

I see that others have answered the question well. And I suspect that you will head down this path, but just in case you aren’t considering it - I highly recommend learning PowerShell. even just basic commands. It will open up so many opportunities for you to help make your life easier as an admin in general, not just SCCM. If you plan to do other things besides SCCM later in, having a good understanding of PowerShell will be a very marketable skill for you to have.

I highly recommend PowerShell in a Month of Lunches as a great book to get you started.


https://www.amazon.com/dp/1617294160/ref=cm_sw_r_cp_api_i_YyqRDb82T8T6V

u/bonesingyre · 5 pointsr/webdev

Sure! There is a lot of math involved in the WHY component of Computer Science, for the basics, its Discrete Mathematics, so any introduction to that will help as well.
http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/ref=sr_sp-atf_title_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1368125024&amp;amp;sr=1-1&amp;amp;keywords=discrete+mathematics

This next book is a great theoretical overview of CS as well.
http://mitpress.mit.edu/sicp/full-text/book/book.html

That's a great book on computer programming, complexity, data types etc... If you want to get into more detail, check out: http://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/0534950973

I would also look at Coursera.org's Algorithm lectures by Robert Sedgewick, thats essential learning for any computer science student.
His textbook: http://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/ref=sr_sp-atf_title_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1368124871&amp;amp;sr=1-1&amp;amp;keywords=Algorithms

another Algorithms textbook bible: http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844/ref=sr_sp-atf_title_1_2?s=books&amp;amp;ie=UTF8&amp;amp;qid=1368124871&amp;amp;sr=1-2&amp;amp;keywords=Algorithms




I'm just like you as well, I'm pivoting, I graduated law school specializing in technology law and patents in 2012, but I love comp sci too much, so i went back into school for Comp Sci + jumped into the tech field and got a job at a tech company.

These books are theoretical, and they help you understand why you should use x versus y, those kind of things are essential, especially on larger applications (like Google's PageRank algorithm). Once you know the theoretical info, applying it is just a matter of picking the right tool, like Ruby on Rails, or .NET, Java etc...

u/flaz · 2 pointsr/electronics

I have programmed computers for a living for nearly twenty years. I have also done hobby electronics for longer than that. However, I don't know electronics remotely as much as I do programming. So I have a few things to say about this in terms of programming.

My recommendation would be to begin learning C right away. You'll have to know it to learn C++ later anyway, plus there are many C-like languages out there. Once you understand C, it will be much easier to learn different assembly languages for different devices. From my own experience with electronics and programming, C will be an incredibly useful tool to have at your disposal. Once you have C basics down, there are tons of books and online resources out there for learning to program AI. It will take a few years to get good at programming, so stick with it and be patient.

The great thing about learning programming is that you don't need an instructor or class. You can learn it all on your own, all the way to being a professional. When you get to college, if you wanted to stay with programming only, then computer science would be a wise choice. However, my own experience has shown that getting a degree in computer science isn't necessary if you teach yourself programming, and you work hard at it. Therefore you can focus on electrical engineering when you get there and continue to work on your programming skills yourself.

For electronics, I would start with the book, Make: Electronics. Once you learn C, I would get an Arduino starter kit and a book about it. That will definitely get your feet wet with robotics-like electronics and C programming. You'll be able to do some pretty powerful stuff at that point, and have a really good idea of where to go next with college.

Finally, I would strongly suggest studying as much mathematics as you can. I hated math so much when I was younger, but now I use it all the time and wish I had better skills. You won't need it in the early years, but I guarantee that you'll need it later when you get good at your craft. I know this from my own experience and wish I had studied more math in high school and college. In fact, if I had it to do over, knowing what I know now, twenty years later, I would have just gotten a degree in math. You will eventually be shocked by how many uses there are for even some of the seemingly most useless math stuff. Every little tidbit you learn now is another trick in your pocket to make good money with later on.

u/jacobolus · 2 pointsr/math

I’ve only skimmed parts of it (I don’t have a copy, but might buy one sometime). Seemed like there was some good stuff in there though. The Princeton Companion to Mathematics is also great in pure math type subjects.

Another book I like, less numerical-analysis-y and more computer algorithms-y, is Graham/Knuth/Patashnik’s Concrete Mathematics. It’s aimed at undergraduate computer science students, but you might find it useful.

What was your undergraduate background / what other experience do you have? And what are your interests? Any specific things you want to build? There are also obviously a whole pile of famous/classic computer science books. (Asking questions in programming or CS related subreddits might get more responses on such a theme.)

u/DeepDuh · 7 pointsr/todayilearned

Anyone interested in this topic should read the codebook. As I remember the polish were the first to crack it, but after improvements of the enigma system they didn't have the resources to crack it anymore. The British built upon the polish success and threw lots of money and talent at it such that they could crack all oncoming versions - with the exception of the German navy that used the best version of Enigma (and had better practices in place).

u/cquick97 · 3 pointsr/AskNetsec

Depends on what you want to learn.

Web Application Security?

Exploit Development?

"Pentesting" techniques?

Also check here for tons other of resources.

As for certs, if you are a beginner beginner, then probably stuff like Security+ and Network+. Unlike the guy behind me, I will never get, nor do I really recommend CISSP, unless you are going for strictly blue team (defense) work. I personally enjoy red team (pentesting, etc), so something like OSCP would be more useful.

Like I said in a post above, feel free to PM me with questions. I'm always happy to help others on their quest to learn more about the wide world of infosec :)