(Part 2) Best computers & technology books according to redditors

Jump to the top 20

We found 39,382 Reddit comments discussing the best computers & technology books. We ranked the 9,387 resulting products by number of redditors who mentioned them. Here are the products ranked 21-40. You can also go back to the previous section.

Next page

Subcategories:

Computer & video game strategy guides
Software certification guides
Computer science books
Web development & design books
Networking & cloud computing books
Operating systems books
Computer programming books
Programming languages books
Computer software books
Computer graphics & design books
Internet & social media books
Databases & big data books
Computer hardware & DIY books
Business technology books
Mobile & wireless computing books
Computer security & encryption books
Digital audio, video & photography books
Computer history & culture books

Top Reddit comments about Computers & Technology:

u/-IrrelevantElephant- · 1127 pointsr/personalfinance

>I am pretty good with computers

There you go! Dedicate as much free time as you have to studying to get an A+ Certification, then start searching around for local IT/Helpdesk jobs. Once you're in and get some experience, there is all sorts of room for promotion. It all depends on the time and effort you put into it.

As far as what/where to study, there are a ton of resources out there. Professor Messer has a whole series of totally free videos for not only A+ certification, but most of the other major certifications as well. You should also pick up this book as it covers just everything you'll need to know for the exam plus a lot more.

u/samort7 · 257 pointsr/learnprogramming

Here's my list of the classics:

General Computing

u/hobbitparts · 227 pointsr/WTF

Simon Singh explains.

edit: Hey, I didn't expect this to become the top comment. Neat. Might as well abuse it, by providing bonus material:

This is the same Simon Singh discussed in this recent and popular Reddit post; he is a superhero of science popularization. He has written some excellent and highly rated books:

u/_a9o_ · 188 pointsr/cscareerquestions

Refactoring: Improving the design of existing code

Design Patterns

Working Effectively with legacy code

Clean Code

How to be a programmer

Then there are language specific books which are really good. I think if you read the above, slowly over time, you'll be in a great place. Don't think you need to read them all before you start.

u/HeterosexualMail · 187 pointsr/programming

We did something similar as well. The labs were tons of fun. I remember having to run a couple dozen lines of code through the CPU cache on a test once, including some sneakery of using code as data at one point. I do appreciate having done it, but I'm not sure how much practical lasting value that really contributed.

That said, for those who are interested in this there is The Elements of Computing Systems: Building a Modern Computer from First Principles, more commonly known as "NAND to Tetris".

Petzold's Code is excellent as well.

Edit: Actually, while I've suggested those two let me throw Computer Systems: A Programmer's Perspective into the mix. It's a book we used across two courses and I really enjoyed it. We used the 2nd edition (and I have no issue recommending people get a cheaper, used copy of that), but there is a 3rd edition now. Being a proper text book it's stupidly priced (you can get Knuth's 4 book box set for $30 more), but it's a good book.

Anyone have suggestions similar to that Computer Systems's text? I've always wanted to revisit/re-read it, but could always used a different perspective.

u/Mydrax · 118 pointsr/learnprogramming

Well, this is usually because C++ is not really a beginner friendly language. You need to understand the architecture/fundamentals of a computer system at times to understand certain concepts and are often difficult to understand ex: pointers, dynamic memory allocation etc. and with C++ you never finish learning!

Yes, you are very correct about understanding basics before doing actual game-based programming, C++ Primer is pretty old but it's definitely a golden book alongside it though for someone like you I will suggest some of the books I read a couple years back and some that I believe are better for beginners:

Accelerated C++: Practical Programming by Example

Programming: Principles and Practice Using C++

The C++ Programming Language, 4th Edition- Very big book, read this after you've read the rest.

And a book that I've heard is pretty good for game development with c++: https://www.amazon.com/Mastering-Game-Development-professional-realistic/dp/1788629221

u/jtr99 · 106 pointsr/netsec
u/jwaters · 99 pointsr/sysadmin

The "Practice of System and Network Administration"; probably a bit too early in your career but has some strong advice.

https://www.amazon.com/Practice-System-Network-Administration-Enterprise/dp/0321919165

There's also a volume 2 which is cloud/site reliability engineering related.

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/arnar · 71 pointsr/AskReddit

A program in any language goes through either a compiler or an interpreter, or a mixture of both. A compiler turns the program into a series of machine instructions, low level codes that the processor knows how to "execute". An interpreter executes a program indirectly.

The first step of both compiling and interpreting is called parsing. This step takes the program text and converts it into an internal representation called an AST (Abstract Syntax Tree). For e.g. this converts "if" and its attached test and statement blocks into one kind of object, and "or" and its attached expressions into another kind. The compiler or interpreter knows that these two objects should be handled differently.

Programming languages are often programmed in themselves. However, a bootstrapping process is required to create the first compiler or interpreter, i.e. the first version needs to be written in a different language. For low level languages like C, this bootstrapping language is usually assembler. For other languages, more often than not the bootstrapping language is C. Some compilers or interpreters are written in different languages, e.g. the most popular version of Python (which is a mix of a compiler and an interpreter) is written in C.

Going from "rand()" to a string of bytes has more to do with calling a library than a specific feature of a programming language. From the PL point of view, "rand()" is a function call. This function resides in a library that may or may not be written in the same language, in any case, it contains the logic to generate a random number. There are several ways to do this, google or wikipedia for Pseudo Random Number Generator (PRNG).

The standard reference on compilers and interpreters is the so-called Dragon Book, I'll leave it up to others to suggest more material.

u/Lhopital_rules · 64 pointsr/AskScienceDiscussion

Here's my rough list of textbook recommendations. There are a ton of Dover paperbacks that I didn't put on here, since they're not as widely used, but they are really great and really cheap.

Amazon search for Dover Books on mathematics

There's also this great list of undergraduate books in math that has become sort of famous: https://www.ocf.berkeley.edu/~abhishek/chicmath.htm

Pre-Calculus / Problem-Solving

u/LateBroccoli · 64 pointsr/compsci

Long answer is here

Short answer is "stop whining and learn while you still can"

Regards,

Someone who didn't

u/sycnewtox · 62 pointsr/sysadmin

I wanted to add that if you're brand new to PowerShell then you should take a look at PowerShell in a Month of Lunches.

Also, take a look at /r/PowerShell. There are fantastic people in there, and they're incredibly knowledgeable.

u/fizzlefist · 61 pointsr/sysadmin
u/replicaJunction · 60 pointsr/PowerShell

The best way to learn anything depends on your learning style. Some people learn better by reading, some by watching videos, and some by doing. It's important to know how you learn effectively.

That said, my recommendation is to find a routine task you do regularly and figure out how to do it automatically with PowerShell. Do you archive old report files to a specific directory structure? Learn about Copy-Item. Do you manage Exchange, SCCM, O365, anything like that? They all have automation support with PowerShell. There are even community modules that support a lot of third-party products - for example, the JiraPS project allows you to manage JIRA items with PowerShell, including creating new issues, commenting on existing ones, and closing them out.

If you prefer reading, the book Learn PowerShell in a Month of Lunches is often recommended - but it's very important that you actually follow along with the exercises in the book. Type them and run them on a live computer whenever possible.

If you prefer videos, I suggest the Microsoft Virtual Academy series on PowerShell. These are a bit long, but they do a great job of teaching you both concepts and practical knowledge.

Hope that helps!

u/VA_Network_Nerd · 60 pointsr/networking

Consider buying these, or checking them out from local library:

Network Warrior

The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT (3rd Edition) 3rd Edition

-----

Cisco / Networking

Stanford University Free Introduction to Networking Online Course
Cisco Learning Center - How to Study for CCNA for Free
Professor Messer's CompTIA Network+ Training Videos
Cybrary Free CCNA Training Videos
Cisco VIRL - Virtual Router & Firewall Training Tool
GNS3 Vault - Free Practice & Training Labs for Cisco Equipment
Cisco Live Training Convention Video Portal - Free Registration Required
Cisco Design Zone - Best Practices
PacketBomb - WireShark Training Center
NetCraftsmen - Network Consultants Blog
PacketPushers News & Podcasts
IOSHints - Ivan Pepelnjak's Blog/site
Cumulus Networks SDN Technical Videos
SDX Central - SDN Resources



-----

The Best of Cisco Live

Cisco Live is Cisco's annual Technology expo & training convention.

All of these presentations are available for free here: http://www.ciscolive.com/online - Many with video presentations of the lectures.

BRKARC-3001 - Cisco Integrated Services Router G2 - Architectural Overview and Use Cases (2013 Orlando) - 2 Hours
BRKARC-3001 - Cisco Integrated Services Router 4000 - Architectural Overview and Use Cases (2015 San Diego) - 2 Hours
BRKARC-2001 - Cisco ASR1000 Series Routers: System & Solution Architectures (2015 San Diego) - 2 Hours
BRKARC-1009 - Cisco Catalyst 2960-X Series Switching Architecture (2016 Las Vegas) - 90 Mins
BRKARC-3438 - Cisco Catalyst 3850 and 3650 Series Switching Architecture (2015 San Diego) - 2 Hours
BRKARC-3445 - Cisco Catalyst 4500E Switch Architecture (2015 San Diego)
BRKARC-3465 - Cisco Catalyst 6800 Switch Architectures (2015 San Diego) - 90 Mins
BRKARC-2222 - Cisco Nexus 9000 Architecture (2015 San Diego)

...

BRKCRS-3147 - Advanced troubleshooting of the ASR1K and ISR (IOS-XE) made easy (2015 San Diego) - 2 Hours
BRKCRS-3146 - Troubleshooting Cisco Catalyst 3650 / 3850 Series Switches (2015 San Diego) - 2 Hours
BRKCRS-3142 - Troubleshooting Cisco Catalyst 4500 Series Switches (2015 San Diego) - 2 Hours
BRKCRS-3143 - Troubleshooting Cisco Catalyst 6500 / 6800 Series Switches (2015 San Diego)
BRKDCT-3101 - Nexus 9000 (Standalone) Architecture Brief and Troubleshooting (2015 San Diego)
...

u/Secondsemblance · 56 pointsr/2meirl4meirl

There are a lot of different ways to get in, and the only real requirements are reading comprehension and knowing how to use google.

Here's what I did: Read this book, took the A+ 801 and 802 on the same day, and applied for tech support jobs. I landed a decent phone tech support job with my second interview. Start to finish, it took about a month. I only made $15/hour to start with.

I immediately started using linux as my daily OS on all of my personal devices, and my skills really started to take off. After a year, I got a raise to 42k. Then I jumped to devops and started at 55k. I've increased my salary by roughly 10k every year ever since.

u/srnull · 54 pointsr/programming

Sorry to see this getting downvoted. Read the about page to get an idea of why /u/r00nk made the page.

I have to agree with one of the other comments that it is way too terse at the moment. I remember when we learnt about e.g. d-latches in school and it was a lot more magical and hard to wrap your head around at first then the page gives credit for. That and, or, and xor gates can be built up from just nand gates (the only logic gate properly explained) is also glossed over. Either go over it, or don't show the interiors of the other logic gates.

The interactive stuff is really neat. Good work on that.

Edit: If anyone reading wants to learn this stuff in more detail, two good books are

u/ThatOtherPerson · 52 pointsr/TumblrInAction

I work in web security. For those of you that will be working on the site, please read/have already read/be aware of the lessons found in:

  • The Web Application Hackers Handbook - Everyone that makes interactive websites should at least skim this.
  • SQL Injection Attacks and Defense - Everyone remembers "The Summer of Lulz," right?
  • Web Application Obfuscation - There's more than one way to hide an attack.

    Expect your website to be attacked. Some advice:

  • Blacklists^[1] never work. There is always a way around a blacklist. Whitelist^[2] every input.
  • Never roll your own crypto.
  • If it comes from the user's computer, it can be controlled by the user. No exceptions.
  • Relying on security through obscurity will not work (ex: hiding the key to the building in a fake rock). Obscurity can be part of a strong multi-layered larger approach (hiding the key to the building inside a safe that is bolted to the foundation and hidden in a fake rock on well-lit grounds that are patrolled by competent and well-paid guards on a shorter duration than it would take to break into the safe), but never by itself.
  • Never roll your own crypto.
  • Basic Authentication: Just Say No
  • Digest Authentication: Just Say No
  • Never roll your own crypto.
  • Encrypt-then-HMAC only. Never HMAC-then-Encrypt or Encrypt-and-HMAC.
  • https encrypts the transmission of data, it does not make the transmitted data any more/less "safe".
  • Did I mention "never roll your own crypto" yet? No? Okay. Never roll your own crypto.
  • Never transmit sensitive data as GET requests over http. Use POST body parameter/value pairs over https.
  • Never store the actual passwords, only store salted cryptographic hashes of the password. No, the users do not need to see their own password. If they forget it, email them a single-use time-limited link to a page where they can set a new one. No exceptions.
  • Never roll your own crypto.
  • Do not use MD5/SHA/SHA256/etc. for password hashing. No exceptions. Salted password hashing is a solved problem.

    If you'd like some advice, have any questions, I should be able to get back on reddit sometime tomorrow (unfortunately, I have a lot of work I need to get started on).

    [1] - Blacklist: Allow everything in except for things on this incomplete list of known bad things.

    [2] - Whitelist: Only allow in things on this list of known good things and reject everything else.
u/sir-alpaca · 50 pointsr/todayilearned

The movie is okay as a movie, but as as far as historical value goes, it's more in the 'inspired by' category. They touch upon a few of the moments and ideas presented here, however.

For a more (and way more interestingly brought) in depth explanation, I can recommend 'The Code Book' by Simon Singh (amazon)

u/stormblaast · 48 pointsr/programming

I would highly recommend the Effective C++ books to anyone who is learning C++. It should be mandatory reading once you grasp the basics of C++. These books are easy to read, and the "holy shit, this could have bit me in the ass hard" factor is high.

u/rtanaka6 · 48 pointsr/programming

But the Dragon Book has cool dragons on it!

u/Nezteb · 43 pointsr/compsci

Some book recommendations:

u/chemicalcomfort · 42 pointsr/ProgrammerHumor

A good metric is by how expensive the object you're passing around is to make a copy of. In the case where you're passing by value, you're probably returning by value as well so two deep copies there. An alternative is references which are syntactically similar to pass by value but retain the memory niceties of pointers which don't require a full copy but rather just the passing of a memory address.

Typically my rule of thumb is bigger than a pointer use a const reference unless I need a fiddle with the bits in the object I'm passing then I'll go with a pointer. Given enough practice and seeing enough code you sort of get a feel for when it's best to use what, but you kind of need to understand the tradeoffs between how you throw around data.

Passing references everywhere is bad though because it makes it less obvious to person reading/using your code that the object you're passing in could potentially be different object than the one you passed in. If your function takes a pointer it tells the reader that you probably intend to do something with the object's data in the function to change it. Which comes to the second point of using 'const' everywhere which not only informs the reader that the object will not be changed but also binds your function to a contract to not be able to change the value.

For more stuff like this I highly recommend Effective C++ and More Effective C++

u/Shuank · 40 pointsr/argentina

Creo que mucha gente se confunde ser autodidacta con hacer algun cursito de como hacer una web y darle con eso.
Para llegar a cierto nivel, tenes que aprender computer science, teoria y trabajar en cosas que te permitan aplicar esa teoria.
Tenes que saber ver un algoritmo y poder calcular la complejidad, tenes que entender que son las patrones de diseño y cuando conviene aplicar tal o cual.

Tenes que entender como funciona OOP, pero tambien tenes que aprender algun lenguaje funcional, te va a hacer un programador más rico.

Tenes que entender de Unit Testing, automated testing, Integration testing.

Los dos libros que más me ayudaron cuando empecé en computer science son :
https://www.amazon.es/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693
y
https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612

Y ir codeando mientras vas leyendo y aplicando las cosas es fundamental.

Me parece que la diferencia entre ser autodidacta es que no tenés esa vara minima que te da la facultad, asi que depende de vos que tan crack queres ser y si estas dispuesto a poner el laburo y a aprender cosas constantemente.
La información esta en internet o Amazon, no hay ningún secreto.

u/tragomaskhalos · 40 pointsr/programming

I think the problem is that there are two mutually incompatible teaching requirements here:

1/ Teach nix and C, including fork() and pals

2/ Teach C++ = modern, idiomatic C++ with STL
from the outset*, as is generally considered to be the best way.

These are almost entirely separate areas and should be taught separately.

u/NorthwestWolf · 37 pointsr/programming

Along those same lines I can recommend: The Elements of Computing Systems. With the book as a guide you build a whole computer, starting with NOR to build the basic logic gates, and finishing by writing a simple OS.

u/sold_myfortune · 37 pointsr/cybersecurity

​

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.

Here's how you get there:

Step 0: Make a habit of using spellcheck, then proofreading what you've written.

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

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

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.

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&qid=1551450119&s=gateway&sr=8-1-fkmrnull

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.

Step 4: Get the Security+ certification.

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

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

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

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

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

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

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

Guess what, you're an infosec professional!

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+.

u/overflowingInt · 36 pointsr/netsec

Not very specific to those technologies but:

>Web Application Hackers Handbook (2nd edition: http://www.amazon.com/The-Web-Application-Hackers-Handbook/dp/1118026470) is pretty thorough with the vectors of attack, examples, and includes a methodology for pentesters.

>The Tangled Web - a "light" but delightful read from Zalewski on the history and modern security of web apps. He also wrote the http://code.google.com/p/browsersec/

Both are pretty recent and cover some good ground.

u/Turtl3Up · 35 pointsr/hacking

I'm the manager of application security and research at a mid-level software vendor with over 400 developers and testers and I want to recommend you ignore all of the more generic advice currently in this thread. As someone with coding experience and interest, you have a unique path to infosec that so many companies want, but find it extremely difficult to hire for.

Any company that ships software has to consider the security of their application - full stop. Most rely on scanners or annual third-party vulnerability assessments for this, but obviously that falls short. They need people who can build security in from an architectural standpoint. Someone who can actually implement the fixes suggested by the above methods, and ideally, someone who can help implement security as an integral part of the SDLC instead of as a bolt-on premise.

My recommendation is to make your way through 24 Deadly Sins of Software Security and The Web Application Hacker's Handbook. If you can understand the bulk of concepts in these two books, you'll be leagues ahead of almost any developer you find yourself up against in a hiring scenario. For the coup de gras, learn about threat modeling. It's a great way to teach other developers and testers security and to build security into any system during design instead of post-release. Check out this book which is actually probably a little too comprehensive, use this card game from Microsoft (it seems silly, but I promise you it works), and watch this talk one of the guys on my team gave at BSides Cincinnati.

If you have any questions, PM me.

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/robertito42 · 34 pointsr/sysadmin

I'm not sure I'd consider Powershell devops than a core Windows administration tool. Devops to me would be like Chef, Puppet, Ansible, Salt, etc. (Puppet I think would be good for a Windows person to learn.)

You can do Powershell in a month of lunches: https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

You can do the Microsoft Virtual Academy as well: https://mva.microsoft.com/en-us/training-courses/getting-started-with-powershell-3-0-jump-start-8276

Powershell is very object oriented and pipelined, it's not a bunch of "++1, !, +3," style of true programming. It's more of a "get-aduser doej"

A lot of the commands are the same syntax prefixes, like "get" and "export".

Don't be discouraged, envision yourself knowing this inside and out in a year, and your mind will work you toward this goal.

What, specifically, do you work with that you think can benefit from scripting?

u/meowlalameow · 33 pointsr/askgaybros

Are you in New England? Amway is a pyramid scheme that a lot of people in my area fall into. As for IT...bro, he doesn't even need to get a degree. Buy him this, make him study the entire guide + do the included practice tests, have him take the exam, and then have him apply for entry-level IT jobs. That is the best way to break into IT at first. You can work your way into a high-paying job and...it's not a scam!

No offense, but someone falling for Amway would be a dealbreaker for me... :-/

u/astro_za · 32 pointsr/PowerShell

Powershell in a month of lunches is apparently quite good, that will cover Powershell from the basics to relatively advanced concepts, although I don't recall it covers AD.

Once you have a grasp of PowerShell, the AD modules are not much trouble to learn at all, MCSA should at least cover some of that.

Also - Take a look under the "resources" tab on the right of this sub.

u/hawkcannon · 32 pointsr/A858DE45F56D9BC9

I never thought I would see the day that A858DE45F56D9BC9 would plagiarize, but this was taken digit-for-digit from RAND's A Million Random Digits with 100,000 Normal Deviates.

u/zorfbee · 32 pointsr/artificial

Reading some books would be a good idea.

u/Anarcho-Totalitarian · 31 pointsr/math

For density, you could try Herbert Federer's monograph: Geometric Measure Theory.

As for boring, there is a certain publication from the RAND Corporation you could look into.

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/canadadryistheshit · 28 pointsr/sysadmin

I was in your same shoes 3 years ago when I took my first SA internship. I was the only person on site for 8 employees locally, 30 around the country.

I was scared to make actions at first but the first thing you need to do is learn your network in and out and document the shit out of everything before you even make a change. After that, you will be confident and I am sure of it.

1.) Begin a document called "IT Department Handbook" - add everything you find to it, except passwords. Refer to it, love it, it will always save you. Include disaster recovery in it. Make it so that a third grader can understand it. I have one thats 50 pages right now. This will save you as it has saved me so many times. Make it confidential though, because it will end up holding information you don't want people to see on the outside such as IP addresses and your network map.

2.) Keep passwords file but separate from the system and indistinguishable. I actually keep a password file on my phone in my memo's app but I don't have the full account usernames associated with each one. I provide really indistinguishable hints to the username, usually riddles that only I would know.

3.) Get Veeam endpoint backup and find a place to backup your DC (full backup) and any databases at the very least. You can create a standard for backups later.

3a.) Find the Domain Controller's recovery password immediately.

3b.) Create a recovery USB for all your servers and put them in a location where you can find them later.

4.) Get a Network Diagram going, then after that...

5.) List all Roles and Features each server has on the network diagram, what each server stores, what applications run on them and how essential they are to the business. Example: Domain Controller. No domain controller, no work can be done. CRM: No crm, people can't keep of their cases on the webserver but rather locally, they can live without it for a short time. Start thinking about disaster recovery.

6.) Develop a Khanban System. It's an agile project management method I learned from reading This Book -- I highly suggest buying this to help you better your practice. Put tasks in the backlog and move the ones you think need to be done sooner than others to your daily or weekly sprint.

7.) Find out who uses what server for certain tasks. This may take a while but it helps.

8.) Something I do personally before doing any changes to Group Policy or Regedit is I save their current configurations before making changes. Therefore, if something doesn't work right after a setting is changed, you can quickly revert back to it's last state.

9.) If you have the capability and hardware, get clustering going. So if a DC1 fails, DC2 takes over and everyone can still authenticate and work.

10.) If you have the capability and hardware, create a test environment reflecting your live network on a very small scale but enough to test "Ok so if I make this change, can people from workstations still login, can they still access the development server... etc." - you can create a test domain under your current forest and have it remain separate in this test environment.

11.) If it's not already in place (this might take some time) create a naming nomenclature standard. I.E. DC1.example.com (domain controller 1), DC2.example.com, PS1.example.com (production), WEBS1.example.com (webserver), TE1.example.com (test env.), WK1.example.com (workstation number 1...2...), VM1.example.com (virtual machines). This will help when it comes to debugging issues. My boss likes to make personal names for his servers which drives me fucking nuts because we have 20 servers between us and our clients that we manage. It's a lot better for him to mention "yea I cant get into PS1." rather "I cant get into rabbit" - and there I am trying to remember which server rabbit is and what features it holds off the top of my head; which is where a network diagram can come into play.

u/cholland89 · 27 pointsr/compsci

I just finished reading Code: The Hidden Language of Computer Hardware and Software and will state unequivocally that this book is the most satisfying read I've experienced. It starts with flashlights blinking through windows, moves to Morse code, introduces electrical relays and demonstrates how they can be connected to form logic gates, then uses those gates to construct an ALU/counter/RAM and multiplexors. It goes on to describe the development of an assembly language and the utilization of input and output devices.

This book can be described as knowledge hose flooding the gaps in my understanding of computer hardware/software at an extremely enjoyable pace. It may help satisfy your interest in the concepts and technology that led to modern computers. Check out the reviews for more info.

If you haven't already studied logic gates in depth in your formal education, I would suggest using a logic simulator to actually build the combinational logic structures. I now feel very comfortable with logic gates and have a strong understanding of their application in computing from my time spent building the described logic.

I went through the book very slowly, rereading chapters and sections until I felt confident that I understood the content. I can not recommend this book enough.

After reading CODE, I have been working through The Elements of Computing Systems: Building a Modern Computer from First Principles. If you are looking to gain a better understanding of the functions of hardware components, this is the book to read. This book's companion site http://www.nand2tetris.org has the first chapters free along with the entire open source software suite that is used in the book's projects. You will build, in the hardware design language starting with Nand gates, each logic gate and every part of a computing system up to a modern high level language with which you can program custom software of your own design to compile in a compiler you designed into an assembly language you specified which is turned into binary that runs in a processor you built from Nand gates and flip flops. This book was very challenging before reading CODE, now I feel like I'm simply applying everything I learned in code with even more detail. For somebody that hasn't attended college for computing yet, this has been a life changing experience.

http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319


http://www.amazon.com/The-Elements-Computing-Systems-Principles/dp/0262640686

u/_mroloff · 27 pointsr/PowerShell

PowerShell in a Month of Lunches is kind of the defacto starter book.

From there, I would recommend diving into The PowerShell Scripting and Toolmaking Book.

Naturally, this sub is also an excellent resource. You could also join the PowerShell Slack, where tons of good discussions/examples can be found.

u/APTMan · 26 pointsr/JobFair

Most current information you are going to want to read online. There is no substitute for that. The books I'm currently reading through are:

The Web Application Hacker's Handbook 2nd Ed

The Tangled Web

Metasploit: The Penetration Tester's Guide

Webbots, Spiders and Screen Scrapers

NoStarchPress fanboy all the way :)

Keep in mind, though, that the technical requirements are only half of being employable. You also need to be a good employee, who can work with the client and keep them satisfied. For those, I recommend:

True Professionalism

Trusted Advisor

u/jkndrkn · 26 pointsr/programming

Refactoring. I've known many a coder that loves to engage in this most macho of disciplines. Funny thing is, is that many such coders don't use any unit testing. As anyone who has read or at lest skimmed Refactoring
knows that one should not even contemplate making any changes without a solid test suite to catch the inevitable bugs.

Refactoring isn't about engaging in brutal combat with your code. Refactoring is about careful reshaping.

u/Lericsui · 26 pointsr/learnprogramming

"Introduction to Algorithms"by Cormen et.al. Is for me the most important one.

The "Dragon" book is maybe antoher one I would recommend, although it is a little bit more practical (it's about language and compiler design basically). It will also force you to do some coding, which is good.


Concrete Mathematics by Knuth and Graham (you should know these names) is good for mathematical basics.


Modern Operating Systems by Tennenbaum is a little dated, but I guess anyone should still read it.


SICP(although married to a language) teaches very very good fundamentals.


Be aware that the stuff in the books above is independent of the language you choose (or the book chooses) to outline the material.

u/cosmicr · 26 pointsr/Python

I'm amazed that no-one has mentioned this.

The absolute best book for you is Accelerated C++ by Andrew Koenig and Barbara E. Moo.

It is targeted at people who already know another language, especially Java or Python.

u/OSUTechie · 26 pointsr/ITCareerQuestions

This book has been suggested a few times so I finally got around to reading it. I think it has some good information in it. I'm only about halfway through it, but I like it so far.

Time Management for System Administrators

Other books would be any of the social books like "How to influence people", "7 healthy habits..." Etc.

I haven't read this one yet, but It has been suggested to me if you plan to go more into management/leadership Start with Why

Other books that have I have ear marked due to being mentioned:

u/Bluegorilla101 · 26 pointsr/funny

Should have gotten her this dragon book so she can get a headstart on writing compilers.

u/cronin1024 · 25 pointsr/programming

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

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

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

edit: Updated up to redline6561


u/xnhy · 25 pointsr/coding

I like these and would add:

3) Given how cheap they got lately, I would suggest to use at least two screens for work. More screen real estate equals more efficiency.

4) Master your tools. Memorize the shortcuts your editor provides (or learn Vim :) ), learn to take full advantage of your IDE's debugging capabilities, and so on.


...and regarding this...:
> Design patterns.

Refactoring - Improving the Design of Existing Code is a great book on this topic.

u/masklinn · 25 pointsr/programming

So basically Uncle Bob forgot how to actually refactor, and didn't bother whipping up his copy of Refactoring?

Automated refactoring tool are a good thing, because (especially in statically typed languages) they make refactoring safer (but not safe, if you use e.g. code generation or reflection, your refactoring browser won't help you), more systemic, more systematic and much faster.

But they were never necessary, the basic concepts of refactoring were tool-less, and Refactoring lists only manual recipes (with a discussion on refactoring browsers in another chapter), some of them -- if I remember well, it's been some time since I've read it -- not even being automatically implementable.

u/CapableCounteroffer · 25 pointsr/learnprogramming

You can get a degree or you can teach yourself

The above resource is pretty good in outlining the major topics that all CS programs cover, but I would change some of their textbook and class recommendations.

I would replace the programming book/course with CS for all

Algorithms I would recommend sedgewick which is also available as a website or clrs for a more in depth review.

Those two topics will give you a very solid background. For what you want to do computer architecture, networking, operating systems, math, languages and compilers, and distributed systems aren't as important. If you wanted to expand your abilities as a programmer then you should explore those topics.

As for databases, for your purposes you may not need to learn so much how databases work as opposed to how to query databases. For this you need to learn SQL.

This should give you all the background you need in CS, now its time to start building applications. You'll probably hit roadblocks and need to research how to accomplish certain tasks, but with the above background that should be very doable.

u/mu71l473d · 23 pointsr/sysadmin
  • The Practice of System and Network Administration, Third Edition
  • UNIX and Linux System Administration Handbook, Fifth Edition
  • The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services, Volume 2, First Edition
  • Windows Server 2016 Unleashed, First edition
u/KrogerKing · 23 pointsr/homemadexxx

Learn how to access all service guides and manuals.... Learn unix/linux basics. Maybe build a small home lab, you can buy cheap servers and networking equipment online. Never say "I don't know" say "I will have to do some research". Nobody knows everything... Google is your friend.... When you are at work do not browse this sub.. Start reading up on that things they want you to work on now.......I am not an admin but work in data centers every day fixing servers. Been in the industry for 13 years.... still get worried about people finding out I have no idea what I am doing lol

Great Guide
UNIX and Linux System Administration Handbook

u/abstractifier · 22 pointsr/learnprogramming

I'm sort of in the same boat as you, except with an aero and physics background rather than EE. My approach has been pretty similar to yours--I found the textbooks used by my alma mater, compared to texts recommended by MIT OCW and some other universities, looked at a few lists of recommended texts, and looked through similar questions on Reddit. I found most areas have multiple good texts, and also spent some time deciding which ones looked more applicable to me. That said, I'm admittedly someone who rather enjoys and learns well from textbooks compared to lectures, and that's not the case for everyone.

Here's what I gathered. If any more knowledgeable CS guys have suggestions/corrections, please let me know.

u/OneTrueKingOfOOO · 22 pointsr/ProgrammerHumor

I get my randomness the old fashioned way

u/Robo-Connery · 22 pointsr/bestof

The absolutely best thing about this post are the customer reviews on a list of random numbers book on Amazon that was linked.

link

u/JeffK22 · 22 pointsr/offbeat

I knew Amazon reviews were subject to the occasional troll/subversion, but I never knew the extent of it and the craftsmanship put in. From one of those WTF products, A Million Random Digits with 100,000 Normal Deviates [Paperback]:

> 1 Star - Sloppy., July 27, 2005
The book is a promising reference concept, but the execution is somewhat sloppy. Whatever algorithm they used was not fully tested. The bulk of each page seems random enough. However at the lower left and lower right of alternate pages, the number is found to increment directly.

That is just superb.

u/keeegan · 22 pointsr/HowToHack

I have all these except the CEH (which shouldn't be on this list lol...) and they're all pretty good in their own way. Starting over, I'd go through hacker playbook while reading through the art of exploitation. You'll be pretty rounded at this point, blackhat python and metasploit will be a breeze. Do the ceh one if you're getting a job that wants to see embossed paper. Also, check out Web Application Hacker's Handbook, and Shellcoder's Handbook.

u/xxdcmast · 21 pointsr/sysadmin

I like a nice ham sandwich for a lunch point.

As far as getting into PS. This is the usual recommendation.

https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

Enjoy your book and sandwich.

u/Glomgore · 21 pointsr/sysadmin
u/gdhhorn · 21 pointsr/sysadmin

Learn Powershell in a Month of Lunches

Also, SS64 has a great Index/reference of PS commands.

Another good thing to do is to start searching the web for "how do I $taskName in Powershell."

u/willardthor · 21 pointsr/compsci

During my studies, in my research (information-flow security), and as a working computer scientist, I practically never find use for analysis.

Most of (theoretical) computer science is based on logic and algebra, and deals with discrete structures.

That is not to say that real analysis has no home in computer science. Far from it.

Any aspect of computer science that deals with randomness touches on analysis. These aspects resort to probability theory to reason about randomness. And probability theory applies analysis. Example aspects in computer science include cryptography (pseudo-random number generators, hash functions, etc., which rely on number theory), formal verification (model checking, which sometimes uses continuous-time Markov chains as models), information theory (channel coding and signal processing), and machine learning (Bayesian networks).

And, as I am sure you know, optimization and analysis of algorithms (smoothed analysis).

You might find the following books interesting:

u/chekt · 21 pointsr/learnprogramming

As a beginner, the resources you use to learn are much more important than the programming language you end up learning with them. C++ may be more complex than C#, but they're both incredibly complex for a beginner, and so your effectiveness starting out relies an incredible amount on which books you choose to go through. When I was learning C++, I really enjoyed the book Accelerated C++ by Koeing and Moo. It eschews the "learn c, then c++" attitude some other books have, and believes that C++ is significantly different enough from C to warrant a different approach. And you learn C++ one piece at a time, so it's never overwhelming. I heartily recommend it if you decide to learn C++.

I don't own any C# books for beginners, so you'll have to ask someone else for a recommendation :P.

Just a quick note: programming is incredibly difficult when you're just starting out, but it's 10x as rewarding, and is one of the most fun skills you can pick up. Good luck on your journey!

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/delarhi · 20 pointsr/cpp

I guess I'm going to go ahead and be "that guy".

Don't aim to work with a specific language.


I feel you should reframe your goal to be a "problem solver" that knows how to pick and use various tools to solve a problem. C++ may be one of those tools. Maybe C. Maybe Python. Maybe Java. You want to develop your skill set to be flexible enough to adopt the right tool for a job. Now, that's not to say you can't be a language expert. Language experts are very valuable and becoming one is a perfectly reasonable goal. That said, I think you'll find that you have many more opportunities when you remain flexible.

With that out of the way, I would say good next steps for continued C++ mastery are to read and understand Scott Meyers' excellent books:

u/mikepurvis · 20 pointsr/programming

> creating a strong cryptography algorithm is primarily trial and error

I don't think it's trial and error, more like a series of steps in which each is designed to befuddle a particular class of attack that may have been successful on previous iterations. This sort of goes back to the Cold War and even WWII—a code like Enigma was the scramblers and the plugboard, where the plugboard was specifically added to foil a type of dictionary attack.

Anyhow, not that I really know too much about it, but this is a fantastic book on the topic.

u/zzyzzyxx · 19 pointsr/learnprogramming

No. C++ is somewhat unique in that you really get what you pay for; I've not seen a single good online resource to learn it. Every tutorial I have ever looked at contains misinformation and bad practice.

The best way to learn C++, if you have done programming before, is with a book like Accelerated C++ or another from this list. If I am to consider you a complete novice, I would suggest you pick up Python or Ruby again before delving in to C++. There are good resources online for those and they are linked in the sidebar and FAQ.

u/jschm · 19 pointsr/compsci

AIMA. A real treasure trove!

u/NotRickDeckard · 19 pointsr/personalfinance
u/cocorebop · 18 pointsr/reactjs

I keep a copy of this book on my desk. I've never read it but I'll be damned if it's not sitting on my desk.

u/antonivs · 18 pointsr/badcode

The code you posted was generated from a grammar definition, here's a copy of it:

http://www.opensource.apple.com/source/bc/bc-21/bc/bc/bc.y

As such, to answer the question in your title, this is the best code you've ever seen, in the sense that it embodies some very powerful computer science concepts.

It [edit: the Bison parser generator] takes a definition of a language grammar in a high-level, domain-specific language (the link above) and converts it to a custom state machine (the generated code that you linked) that can extremely efficiently parse source code that conforms to the defined grammar.

This is actually a very deep topic, and what you are looking at here is the output of decades of computer science research, which all modern programming language compilers rely on. For more, the classic book on the subject is the so-called Dragon Book, Compilers: Principles, Techniques, and Tools.

u/TaylorHu · 18 pointsr/learnprogramming

I love this book: http://www.amazon.com/Algorithms-4th-Edition-Robert-Sedgewick/dp/032157351X

It's a great read without being too math heavy. That combined with the fact that it has a great associated booksite, a Coursera course, and a couple of followup books by the same author that do go into the more mathy aspect of it, if you're so inclined, make it a great introduction to the world of Algorithms.

u/[deleted] · 18 pointsr/darknetplan

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

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

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

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

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

On human interface guidelines relevant to programming:

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

For GNOME 2, see:

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

To develop Linux applications:

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

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

Definitive, but for experienced programmers:

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

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

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

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

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

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

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

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

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

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

There are some other things to read:

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

http://producingoss.com/

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

On the culture of writing Open Source Software:

Raymond, "The Cathedral and the Bazaar"

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

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

Raymond, "The Art of Unix Programming"

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

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

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

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

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

Beginning to focus on GNU style programming:

GNU Coding Standards

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

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

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

[edit: typos]

u/Lagged2Death · 18 pointsr/tf2

>So if DF is telling the truth, Valve lied to the community...

DF is wrong when he says "the random chance is all BS." There's nothing mutually exclusive about "random" and "pre-determined."

If you roll dice, you get random numbers; if you write those numbers down, they're still random numbers. This was, in fact, the old school way of using random numbers for all sorts of stats problems.

Valve didn't lie. DF et al. just don't know what "random" means.

u/dud3z · 18 pointsr/blackhat

The dark side has lot of facets, it depends on what you want to achieve.

If you are already working on web applications and web in general, then you may want to start with the Web Application Hackers Handbook by Dafydd Stuttard and Marcus Pinto.

This is a very valid book and with your existent knowledge it will be a very interesting read: i may also advise you to read The Tangled Web by Michal Zalewski, this instead will give you a very in-depth look of browsers' quirks and their inner working, quirks you'll learn to exploit.. for science!

Then there is the world of binary reverse engineering and exploitation, my preferred literature on this is Hacking: the art of exploitation: keep in mind that the techniques there may be outdated, but the reasoning and much of the concepts are still valid. It's a very specific book with very detailed information and you are required to know a bit of assembler, C and very low-level stuff.

Happy hunting and good luck!

u/fuzzyfuzz · 18 pointsr/linuxadmin

I have the UNIX and LINUX System Administration Handbook It's awesome and has a pirate boat on the front, so you know it's good. It's great for best practices type stuff, and there's a little bit of sysadmin humor mixed in.

I also have the Linux Command Line and Shell Scripting Bible which is good for CLI reference.

Other than that, you can find a ton of stuff on the web. Is there anything in particular you are looking for?

u/ZeljkoS · 18 pointsr/philosophy

Author here. Let me start:

First software company I founded develops software components for other programmers:
https://www.gemboxsoftware.com/

Our customers include NASA, MS, Intel, and US Navy:
https://www.gemboxsoftware.com/company/customers

Second company I co-founded screens programmers before interviews:
https://www.testdome.com/

We are used by Paypal and Ebay, among others.

I finished computer science at University of Zagreb.

I high school, I won 1st place at national computer science competition in 1997. Because of that I attended Central European Olympiad in Informatics, where I got a bronze medal:
https://svedic.org/zeljko/Competitions/ceoi_medalja.jpg

I have also been part of Croatian team at IOI in Capetown:
https://svedic.org/zeljko/Competitions/ioi_team.jpg

Here is my Linkedin profile: https://www.linkedin.com/in/zeljkos/

I don't work in AI, I got the idea while reading Peter Norvig's book:
https://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597

Hope I changed your mind about how certain you can be about something just based on the first feeling. My about page was one click away.

Although I really know programming and sell my software to thousands of companies, I have to admit I don't see how that makes my article more or less credible. It is a philosophical text, not text about software. I think you made "Appeal to Authority" logical fallacy:

https://www.logicallyfallacious.com/tools/lp/Bo/LogicalFallacies/21/Appeal-to-Authority

Every article should be judged by its arguments, not the credibility of the author.



u/tenpairsofsocks · 18 pointsr/learnprogramming

Taking a course will definitely help and I have a few book suggestions.

Intro to Algorithm
This is pretty much the holy grail on algorithms, used in many college CS courses.

Skiena's Algorithm Design
My personal favorite. Combines his Ph.D experience with real world problems.

u/sobrique · 17 pointsr/sysadmin

Big fan of that book. New edition due soon too!

u/fbhc · 17 pointsr/compsci

I recommend picking up a copy of either Programming Principles and Practice Using C++ or C++ Primer.

​

https://en.cppreference.com/w/ is a reference website, and is the goto resource for quick documentation lookups, etc. However, when learning C++ from scratch, a book is simply the best way to go.

u/BitteringAgent · 17 pointsr/usefulscripts

I assume you're doing user support with exchange and not administrating the server. I learned about powershell a lot from getting an exchange server with a DAG that broke constantly thrown my way. I use powershell just about everyday as a windows admin. I recommend checking out /r/powershell.

On a day to day, I'm running powershell to lookup user information even if it's just basic stuff I can do in cmdline such as "net user %username% /domain" to find some info on their account without having to go into ADUC. I'll use it to connect to Exchange Online and take a look at mailboxes and assign permissions or set out of office messages if I get a ticket like that. I create longer scripts and modules that I run to create new users, remove access to terminated employees, and to cleanup AD, O365, FileShares, etc. I've also written scripts to pull data from websites and put them in an excel spreadsheet and such.

Let's say I get a ticket in asking for employee A to have access to employee B's calendar. They could do this on their own, but why try to teach them when I can just quickly do this (of course I'd teach them if this was a constant thing). I'd open up my powershell console on my computer and connect to Exchange Online (My on-premise server if I was in my old environment) and I take a look at their current settings. So first I connect to Exchange Online. I have a profile setup to where I can run a cmdlet I have created that does the below by just typing "Connect-EXonline" into powershell.

$credentials = Get-Credential -Credential "$($env:USERNAME)@company.com"
Write-Output "Getting the Exchange Online cmdlets"

$Session = New-PSSession -ConnectionUri https://outlook.office365.com/powershell-liveid/ <br /> -ConfigurationName Microsoft.Exchange -Credential $credentials
-Authentication Basic -AllowRedirection
Import-PSSession $Session


From here I will be connected to my Exchange Online EAC. Now I'll want to grab their calendar permissions so I'll run a Get-MailboxFolderPermission on a mailbox to see what permissions they have and then if the request isn't already happening I'll run

Set-MailboxFolderPermissions -Identity [email protected]:\calendar -user [email protected] -AccessRights Editor

Or whatever I so please. There, I'm done. So I did that in 3 quick lines rather than clicking all through some clunky GUI.

Want to learn powershell? I recommend starting with "PowerShell in A Month of Lunches"
. This is how I started learning. Also go to /r/powershell and see the types of questions and answers people are asking/giving. If you want to learn python or bash, I don't have as much help for you other than to start with codeacademy.com if you don't know syntax already. Otherwise, find forums/subreddits for it.

Tl;DR: I recommend starting with "PowerShell in A Month of Lunches" if you are a windows admin and want to start learning PowerShell.

u/v3ded · 17 pointsr/hacking

While Metasploit is a good tool, I would advise you to stray away from it until you learn. (I’m ignoring the fact that you rarely use Metasploit for web penetration testing in the real world anyways...)


You can carry out most of web penetration testing with just few tools like BurpSuite (this is the main one), a directory bruteforcer (gobuster, dirbuster, dirb, wfuzz..) and Nmap. These 3 tools should give you initial idea about the web application and its structure. Then it boils down to your enumeration and ability to spot weird or possibly vulnerable behavior. What is considered as “weird” or “vulnerable” behavior? According to OWASP, countless things. They made a whole web penetration testing guide for that reason - you can find it here: https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents.


Alternatively, this book (https://www.amazon.com/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470) covers web based exploitation in great depths and I highly recommend you obtain it. It was one of my first books ever and is definitely among my favorites.


Another useful resources:
https://portswigger.net/web-security

https://www.hackerone.com/hacker101


EDIT:
Yes, there are other very specific tools which come in handy such as wpscan or sqlmap. While I don’t mind wpscan that much, I strongly believe one should be able to do a manual sql injection before using sqlmap (therefore avoid sqlmap when learning). This way you understand what is happening behind the green terminal ;).

PS: Sorry for formatting, typed this up on a phone. I’m also pretty tired so please excuse my janky grammar!

u/Tandrial · 17 pointsr/compsci

You might want to start by looking here : http://www.nand2tetris.org/
It's an "online class" based on this book http://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/0262640686
They start with simple logical units (In the first chapter you'll build NOT, AND, OR, XOR from NAND) and end with Tetris.

To get from transitors to NAND check this out http://www.cs.bu.edu/~best/courses/modules/Transistors2Gates/

u/mohabaks · 17 pointsr/unixporn

Thanks ;). Not so skilled on that and my advice might be misleading; though I got a background in cs:This would be my suggestion for someone beginning.

u/yukw777 · 16 pointsr/funny
u/moto68040 · 16 pointsr/datascience

this isnt particularly related but i always like pointing out rand's most popular ever publication

u/kobakai · 16 pointsr/ItalyInformatica

&gt; Supponiamo che uno (anzi, più di uno visto che siamo tutti componenti di un LUG) voglia iniziare a smanettare un po' in quest'ambito, che cosa consigli?

di farlo :)

&gt; Mettere su un webserver e iniziare a tentare di bucarlo con gli exploit conosciuti può essere una buona idea oppure è meglio prima procedere con altro?

Tutto fa brodo (mi', ventesimo proverbio, mi sto biscardizzando :). Però per prima cosa devono essere chiare le problematiche agli strati più bassi: boot da media esterno, forensics "malevola" (accesso al fs, reset delle password, estrazione delle password, trojanizzazione dell'OS, ..), MITM e i suoi derivati, poi nmap e network/service discovery come se piovesse, analisi di tutti i servizi esposti, poi "finalmente" potete dedicarvi anche alla parte (web) applicativa.. :)

Ci sono moltissimi "playground" per divertirsi ed imparare, sia come vm da scaricare che contest, crackme &amp; co. online, alcuni al volissimo:

u/sandsmark · 16 pointsr/artificial

http://www.amazon.com/Artificial-Intelligence-Modern-Approach-Edition/dp/0136042597 is what I (and probably most others) would recommend as an introductory book.

u/hwillis · 16 pointsr/Physics

This is some kind of weird gatekeeping where AI keeps being redefined until it just means adult human intelligence. I have a textbook that literally has artificial intelligence in the title.

u/deefop · 16 pointsr/sysadmin

Lol what?

Dude, you don't need any fucking classes to start out in IT

You can buy textbooks and earn certs while spending minimum amounts of money

Do not sign up for some fucking ridiculous 23k course. That's insane.

This field is so beautiful because you can dive in without any student debt whatsoever, don't hamstring yourself by going into debt like that

If you want an entry level job, go buy the A+ cert book on amazon

https://www.amazon.com/CompTIA-Certification-Guide-220-901-220-902/dp/125958951X/ref=sr_1_1?ie=UTF8&amp;amp;qid=1549500043&amp;amp;sr=8-1&amp;amp;keywords=a%2B

Maybe do network+ too(that's the path i started out with so I'm biased I suppose).

You're talking like less than 50 bucks for the textbooks and then a couple hundred bucks for the tests(total), and with those 2 certs you can easily get an entry level help desk job and start working your way up.

It beats the fuck out of manual labor, that's for sure

u/UnlikelyToBeEaten · 15 pointsr/math

Disclaimer: I only have a masters in maths, and I've just started working as a programmer.

Here are topics I enjoyed and would recommend

  • At least basic programming. I've heard that if you are interested in mathematics,you may be especially interested in the Haskel language.
  • Mathematical Logic and Meta-mathematics, some (very basic) model-theory. Personally, I also found set theory and the proof of the independence of the Axiom of Choice from the Zermelo-Fraenkel axioms incredibly interesting. The stuff from Gödel, Escher, Bach.
  • Probability theory and Bayesian statistics, along with some basic information theory and theory of complexity / entropy.
  • Basic category theory (though it's a hard subject to learn if you don't have some advanced algebra to motivate why things are done the way they are. It also took me about three or four tries before I finally started understanding it, and after that I found it quite beautiful. Your mileage may vary).
  • EDIT: Also, Knuth's Concrete Mathematics. The book is a very good source on the topic.
u/otcpdx · 15 pointsr/wikipedia

If that interests you, you should read The Code Book by Simon Singh. Great history of cryptography with a lot of well explained examples. He also wrote a great book about Fermat's Last Theorem.

u/SOberhoff · 15 pointsr/math
u/ElolvastamEzt · 14 pointsr/crypto

I am also fairly new to the subject. The first book I read on it was The Code Book by Simon Singh. I highly recommend it.

It was written in 1999, and is not an up-to-date, hands-on resource for encryption software. It is more of a primer on the history and evolution of codes and encryption, with great explanations of the foundations of the psychology and mathematics of codes. It's well written, a fun read, and very informative for beginning studies.

I hope it's ok in this sub to post a link to it. It's a non-affiliate Amazon link:

http://www.amazon.com/The-Code-Book-Science-Cryptography/dp/0385495323

u/Essar · 14 pointsr/nevertellmetheodds

To expand on this, the quality of randomness you need depends on what you want to use it for. For simulations, you just want something that appears uniform, but it would be perfectly fine for it to be prerecorded on a big hard drive and therefore widely known, which is why this exists.

For cryptography, on the other hand, you want something which is random to an adversary, so contingent on the information an adversary might have or be able to obtain, you should have a process to produce numbers which are unpredictable to them.

u/aroras · 14 pointsr/learnprogramming

doing this line by line with as we speak with this amazing book. It definitely helps!

u/BezniaAtWork · 14 pointsr/ITCareerQuestions

There sure are books!

My favorite authors are Mike Myers and Todd Lammle.

Here's a guide for the CompTIA A+ certification.

These books can be a bit pricey, but it's EVERYTHING you need to know for the certification. If you have this book and a computer to practice on, you have everything you need to pass. The book is nearly 1,500 pages long as well. If you struggle to afford the books, you can always search online for illegal copies of older versions and possibly even the latest version that I linked. I assume the copyright police aren't going to be breaking down your doors.

The A+ certification estimates 6-9 months of hands-on training to be able to pass, but it can definitely be done in a shorter amount of time. Don't get dissuaded if after a month you feel tired of studying. Even if you don't have the means to take the exam, the information you can learn will help you so much.

u/ThirdEncounter · 14 pointsr/programming
u/mcur · 14 pointsr/linux

You might have some better luck if you go top down. Start out with an abstracted view of reality as provided by the computer, and then peel off the layers of complexity like an onion.

I would recommend a "bare metal" approach to programming to start, so C is a logical choice. I would recommend Zed Shaw's intro to C: http://c.learncodethehardway.org/book/

I would proceed to learning about programming languages, to see how a compiler transforms code to machine instructions. For that, the classical text is the dragon book: http://www.amazon.com/Compilers-Principles-Techniques-Tools-Edition/dp/0321486811

After that, you can proceed to operating systems, to see how many programs and pieces of hardware are managed on a single computer. For that, the classical text is the dinosaur book: http://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/1118063333 Alternatively, Tannenbaum has a good one as well, which uses its own operating system (Minix) as a learning tool: http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/0136006639/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1377402221&amp;amp;sr=1-1

Beyond this, you get to go straight to the implementation details of architecture. Hennessy has one of the best books in this area: http://www.amazon.com/Computer-Architecture-Fifth-Quantitative-Approach/dp/012383872X/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1377402371&amp;amp;sr=1-1

Edit: Got the wrong Hennessy/Patterson book...

u/jacobolus · 14 pointsr/math

I take it you want something small enough to fit inside a hollowed-out bible or romance novel, so you can hide your secrets from nosy neighbors?

u/lasthope106 · 14 pointsr/learnprogramming

If you go with C++ read Accelerated C++.

u/elliotbot · 13 pointsr/cscareerquestions

&gt; I was wondering if a DS course was necessary to do well on Leetcode problems

Nope:

u/ripplemon · 13 pointsr/PowerShell
u/evetsleep · 13 pointsr/PowerShell

If you're fairly new, I think you should start something like Learn Windows PowerShell in a Month of Lunches. You'll find this recommendation everywhere and for good reason. I personally was an peer reviewer of the 3rd edition and read it page-for-page slowly and provided a lot of feedback. It's a good book to get started with.

After that then move into the advanced tool making books like Learn PowerShell Toolmaking in a Month of Lunches.

Of course this just help get you started. You'll need to get a lot of practice with realistic projects to become familiar with how to build tools. I would highly recommend becoming very familiar with Git. There are a TON of tutorials out there (both web pages and YouTube videos).

Honestly to become a good toolmaker you'll need a lot of practice, but in terms of material these are a good source to get you started. Be patient and try to find small projects that you can grab onto. I would also recommend Windows PowerShell in Action for a more under-the-hood kind of view of how things work.

u/PSNB · 13 pointsr/cpp

Honestly, your best bet would probably be to read a textbook/reference on the language.

Stroustrup's "The C++ Programming Language" is quite good. If you want something more condensed, you could also check out his "A Tour of C++", which is much of the same material in a much smaller package.

u/captainAwesomePants · 13 pointsr/learnprogramming

The big thing you're missing is theory. You have taught yourself to be a programmer, which is great, but you haven't learned any computer science, which is a branch of math focused on whether problems can be solved and how difficult they are to solve. This is likely not particularly applicable to your day to day programming career, but when people start throwing around Big-O notation, it's useful to know what they're talking about. Also it can occasionally help you recognize that certain problems as fundamentally impossible, such as detecting whether a program will run forever or eventually halt.

The second major thing you're missing is formal algorithms training. That means that there are a bunch of useful techniques that you may not know about that may come up from time to time.

The main downside of missing out on these two things is that job interviews, especially for big programmer companies like Google and Facebook, focus heavily on them, especially algorithms. If you don't know that a hash table lookup starts at O(1) but devolves to O(N) in the worst case because of hash collisions, you may have trouble getting a job there.

The rest of what you missed was mostly either crap (UML!) or general breadth stuff that is good to know but not critical (learn how operating systems work, write a compiler, write a TCP networking stack, write a 3D renderer, etc).

I think the best way to deal with the gap is to take a Coursera course on algorithms (there's one starting next month). But that's my learning style. Another alternative would be to pick up a definitive algorithms textbook ( http://www.amazon.com/Algorithms-4th-Edition-Robert-Sedgewick/dp/032157351X ) and just start reading.

u/frenchst · 12 pointsr/cscareerquestions

Three CS fundamental books in the order I'd suggest someone read them if they don't have a background in CS.

u/unix_heretic · 12 pointsr/sysadmin

The Practice of System and Network Administration.

A few general principles:

  • Automate the setup of said servers. Pick a configuration manager: Puppet, Chef, Ansible, Salt. Keep the code for said CM in revision control.

  • Separate your datastore (DB) from your frontend (webservers).

  • Separate your backups from everything else.

  • Set up a scheduled maintenance window in which you patch all of your boxes up-to-date with the latest security fixes. Include reboots where necessary (kernels need love too, and relatively few places have implemented hot-patching kernels).
u/dev_bry · 12 pointsr/learnprogramming

You've already done the first step: admitting that college can only teach the fundamentals while the rest of the things you need to know, you will learn while working.

With that out of the way, here's the next step: apply the Joel Test to your new employer.

If it gets an 11 or 12, you'll be fine. Find a senior developer there to mentor you and you'll be a decent software engineer in 1 - 2 years.

Otherwise, while you might learn a lot of new stuff in your first job, they might be inadequate, outdated, or outright incorrect. In this case, plan an exit strategy ASAP so that you can leave to another company that has a much higher score in the Joel Test. In this fast paced software industry, it makes no sense to spend 5 years in a company where you'd only get to grow the same amount as another guy who just spent 6 months in a better company.

Next step: read. No, not those "Teach yourself [insert language that will be deprecated in 2 years] in 24 hours" books - find the books that teach software engineering, lessons that don't get outdated. Here's the usual suggestions:

u/unovasa · 12 pointsr/programming

I really enjoyed Concrete Mathematics by Graham, Knuth, &amp; Patashnik

u/pat_trick · 12 pointsr/learnprogramming

If you want to pick up some Cryptography, The Code Book is a great intro.

Pragmatic Thinking and Learning is good for learning to learn.

The Pragmatic Programmer is good for project code planning and learning how to write code in a well thought out way.

Ethernet: The Definitive Guide is a good read if you want to get up to snuff on your networking, though it can be a bit dry at times.

u/chickenfun1 · 12 pointsr/ProgrammerHumor

Web dev having trouble finding work? Buy this book and this book, read them and contact [email protected].

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/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/veruus · 12 pointsr/linuxadmin

The Practice of System and Network Administration, Second Edition

UNIX and Linux System Administration Handbook - 4th Edition

[TCP/IP Illustrated, Volume 1: The Protocols - 2nd Edition] (http://www.amazon.com/gp/aw/d/0321336313/)

These should be part of every ops department's library, if not already in your own personal one.

u/phillipjacobs · 12 pointsr/ITCareerQuestions

Pick up Powershell in a month of lunches and grab a free month trial of pluralsight. Two great resources for learning the basics.

For your lab, check on your local craigslist; someone is always getting rid of some gear there. If not there try EBay, can’t swing a dead cat without hitting a CCNA lab kit like these: Cisco Lab Kit

Once you have lab equipment, get some windows servers spun up as that will make learning powershell both applicable and rewarding to you.

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/moofishies · 11 pointsr/sysadmin

For anyone who reads this and goes "Wow! What else can powershell do that I haven't heard about??"

https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

u/OgreMagoo · 11 pointsr/sysadmin
u/EvidencePlz · 11 pointsr/Vive

Enter Bjarne Stroustrup! https://www.amazon.co.uk/Programming-Principles-Practice-Using-C/dp/0321992784/ref=dp_ob_title_bk

Learn C++ (the language you need for Unreal Engine) from its creator. Very beginner-friendly too. "The book is primarily designed for people who have never programmed before".

u/junrrein · 11 pointsr/cpp

Or you can follow this book instead.

u/nonkeymn · 11 pointsr/learnprogramming

leet code is a great place for practice problems


For algorithms this book is great
https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ref=sr_1_9?keywords=algorithms+book&amp;amp;qid=1554149281&amp;amp;s=gateway&amp;amp;sr=8-9

Also, if you are looking for a software engineering role you will also need to brush up on high level design like this video:
https://www.youtube.com/watch?v=KmAyPUv9gOY

u/entropicone · 11 pointsr/compsci

Riding on your top post coattails...

The Elements of Computing Systems and Code by Charles Petzold are exactly what you want.

Code goes through number systems, basic information theory, circuits (from gates on up), memory, machine code and programming languages, all with accessible diagrams and explanations.

TECS has you build an actual working computer from the ground up.

u/PubliusPontifex · 11 pointsr/compsci

The Dragon Book by somebody. A bit out of date now, but really helped me with my parser/tree implementation.

u/LongUsername · 11 pointsr/cpp
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/correctsbadalts · 10 pointsr/funny

Was expecting this dragon book

u/poincareDuality · 10 pointsr/compsci

For designing programming languages, my favorites are

u/aMonkeyRidingABadger · 10 pointsr/learnprogramming

I would emphasize the end of /u/razeal113's post. Don't reinvent the wheel. Learn from those who came before you by studying common algorithms.

MIT's algorithms course, 6.006, is a good introduction to the concepts that are important to analyzing and applying algorithms and it also introduces many important algorithms. You can watch the lectures and access the course material for free.

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/

If reading is your thing, I like Skiena's Algorithm Design Manual. It's not too dense and has war stories where you can read about how the algorithms have been used to solve real problems.

http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693

Whatever your goal with programming is, there's a good chance that it won't involve inventing new algorithms; instead, nearly everything you do will involve recognizing how to apply and/or adapt an algorithm you already know to the problem you're trying to solve. The more algorithms you already know, and the more comfortable you are with them, the easier it will be to recognize and apply.

u/DrDiamond6 · 10 pointsr/mcsa

First, you should have gotten a printout with bar graphs indicating which areas you were weak/strong in. Compare that to the exam objectives here: https://www.microsoft.com/en-us/learning/exam-70-697.aspx to decide which areas to focus.

&amp;#x200B;

If you haven't already, sign up for a free Azure trial and play around with InTune. Hands-on experience with it will go a long way on the test. Know how InTune can be used to manage Mobile devices, compliance vs configuration items, App Deployment methods, etc.

&amp;#x200B;

If you have a PC that can handle it, the Microsoft 365 Powered Lab Kit will set up a number of VMs on your machine for practice. It includes guided labs that will prep you for the exam (and your MCSE: Mobility). It can be found here: https://www.microsoft.com/en-us/evalcenter/evaluate-microsoft-365-powered-device-lab-kit

&amp;#x200B;

Learn the basics of PowerShell if you haven't already. You don't need to know how to script, but a basic understanding of cmdlet syntax and some basic cmdlets will get you by. PowerShell in a Month of Lunches (https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617294160/ref=dp_ob_title_bk) is highly recommended by others here, and I recommend the (free!) MVA videos on PowerShell with Jason Helmick and Jeffery Snover (the first one is here: https://mva.microsoft.com/en-US/training-courses/getting-started-with-microsoft-powershell-8276)

&amp;#x200B;

For books, I used Panek's guide (https://www.amazon.com/MCSA-Microsoft-Windows-Study-Guide/dp/111925230X/ref=sr_1_5?ie=UTF8&amp;qid=1538429066&amp;sr=8-5&amp;keywords=70-697+configuring+windows+devices). It is out of date now for InTune, but the rest of it should still be relevant.

&amp;#x200B;

Last, remember that you don't need to go deep into any of the tech covered - the test is hard because it is broad.

&amp;#x200B;

If you have specific areas you want materials for, let me know, and I'll post what I can find.

&amp;#x200B;

u/tardis_what · 10 pointsr/amazonreviews
u/veeberz · 10 pointsr/netsecstudents

A principle in web app security: user input cannot be trusted.

With that in mind, the following are the kinds of user input you can mess around with: query parameters, post params, file uploads, cookies, http headers, even out-of-band inputs like emails (if they get processed) or all of the above but for a different but related service.

Sometimes user input can be crafted to exploit unexpected behavior. Causing a 500 error may give you interesting error messages. Maybe form input isn't sanitized and you can perform sql injections, XSS, and the like. File uploads - do the files appear to be uploaded to their server (and not something like S3)? Try dropping php files (if it's a php application), try XXE if Word or Excel documents are expected. All sorts of fun possibilities can be explored wherever there is any user input.

Another subject worth studying: attacking authentication. Is there no rate limiting? Usernames can be enumerated? How about a brute force attack? Take a look at the session token in the cookies - can you reuse them? Are they custom-made (does not appear to be generated by a known framework)? Try attacking the token-generation scheme itself. Discovered an XSS vuln and the cookie entry for the session token is not set to http only? Write a script to steal them cookies - that'll be your XSS payload - sit back and wait for someone to bite.

I think exploring these topics is a great start.

Recommended reading:

https://www.amazon.com/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470

Edit: to add, the tools you have listed are info gathering tools. That's the first thing you want to use to give you a nice idea about potential attack vectors. Sometimes dirbuster can yield nice results in itself. For example, I found a deployment script sitting on a prod server - with AWS keys!!! Tip for info gathering: you can use builtwith to see what tech the target is using, and tailor info gathering scripts (like dirbuster) for that.

u/vorpal_potato · 10 pointsr/csMajors

I learned most of what I know from Robert Sedgewick, whose prose is exceeded in clarity only by his diagrams:

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

Steve Skiena is also excellent, and writes a bit more accessibly:

https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202

You can usually find these on the shelves of a university library.

u/RecoverPasswordBot · 10 pointsr/cscareerquestions

For those interested, Coursera is hosting an Algorithms course taught by Kevin Wayne and Robert Sedgewick, authors of a fairly well received Algorithms book.

u/inerg · 10 pointsr/sysadmin

Worth noting that there is a third edition that is significantly updated. I own both would say they're both good but you'll get a lot more out of the third edition.

https://www.amazon.ca/Practice-System-Network-Administration-Enterprise/dp/0321919165

u/Taffaz · 10 pointsr/compsci

The other guys are right that they are multiplexers.

Check out The Elements of Computing Systems if you really want to learn from the ground up. I've just started reading it and after the second chapter you have to figure out how to make an ALU using logic gates made in the previous chapters from a NAND gate including 16 bit multiplexers.

Amazon Link

Book Website

u/chromaticgliss · 10 pointsr/AskComputerScience

Caclulus track is typically required. Linear algebra is pretty useful (and often required). If you really wanna go into CS specific maths.... pick up a book on Discrete Math and give it a go. If you want to be really hardcore, pickup Concrete Mathematics ... good luck, hard book.

Honestly, you're probably better off spending that time learning a programming language. Specifically, whatever language your school teaches mostly. Math in a CS bachelor isn't very intense until you get into senior/graduate level courses.

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/scramjam · 10 pointsr/learnprogramming

Well it depends how much you want to learn, trying to learn all (or even a lot) of C++ or even just the topics covered in that book before your semester starts is insane. C++ is really complicated and takes many years to really get a grip on. If you're just trying to learn some of what's covered in an intro to C++ class this book will serve you well, and you definitely don't need to go through the whole thing to get an introduction to the language.

If you want a shorter/faster book there's Accelerated C++ which is also in the wiki. I recommended C++ Primer since you mentioned you only had minimal programming experience. Accelerated C++ is aimed at folks who are familiar with programming but not C++, so it's faster.

Edit: I missed your mention of moderate experience with Java, so Accelerated C++ would probably be a fine choice as well. Although it doesn't cover the new C++11 features.

u/lukeprog · 10 pointsr/Futurology

Our co-founder Eliezer Yudkowsky invented the entire approach called "Friendly AI," and you can read our original research on our research page. It's interesting to note that in the leading textbook on AI (Russell &amp; Norvig), a discussion of our work on Friendly AI and intelligence explosion scenarios dominates the section on AI safety (in ch. 26), while the entire "mainstream" field of "machine ethics" isn't mentioned at all.

u/achthonictonic · 9 pointsr/sysadmin

cc him on code reviews for your day to day scripts and proactively go over the small ones with him, line by line, a few times a week.

I have a list of exercises(pm me if you are intested) from: http://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057 -- I assign 4 of these exercises weekly and go over it in 1:1s. Buy him a few books, and explain that you can't send him to a conference because of budget issues this year, but you want to invest in his career development -- it will go along way to building the mentor-mentee relationship.

The thing I like about this book, its age does give a good historical perspective, but the questions at the end of the chapters are easily adapted into good questions to fit a particular environment.

I've used this approach to bring up 3 jr linux sysadmins so far.

u/galahadredgrave · 9 pointsr/ArtificialInteligence

I'm just beginning this journey myself, so judge what I say accordingly.

Artificial Intelligence: A Modern Approach seems to be the most popular textbook.

This article has some seemingly good advice, though it seems to be geared more toward Machine Learning (ML) than AI in general.

I think you'll want to learn a programming language. The above article recommends Python as it is well suited to ML.

There is (was?) a free online course on ML from Stanford by Andrew Ng. I started to take it a couple years ago but never finished. It is very accessible. The lectures appear to be on YouTube.

Grokking Algorithms is a highly regarded book on algorithms.

Make a free Amazon Web Services account and start playing with Sagemaker.

There really is no well defined path to learning AI, in my opinion. It is a highly interdisciplinary endeavor that will require you to be a self-starting autodidact. It's very exciting though. There is still plenty of new ground to be broken. Some might argue it is difficult for the little guy to compete with big labs at the big tech companies with their ungodly amounts of data to feed their AI, but I am optimistic.

u/SomeIrishGuy · 9 pointsr/IWantToLearn

Artificial Intelligence: A Modern Approach is a commonly used introductory textbook.

u/Genie-Us · 9 pointsr/learnprogramming

Eloquent Javascript

You Don't Know Javascript

Wes Bros (not all are free, but lots are and he has lots on Youtube. if you want some of the paid ones, there are ways, Yarrrrrr. But if you can, buy it as it's not that expensive and he's a kick ass teacher. If you can't afford them, yarrrrrrrr! Then when you get a job, go and buy them so you're not a dick.

Advent of Coding - Great fun, you'll likely only get the first few to start, but you can read other's code to see how "professionals" do it.

There are a number of other sites for coding practice like... I think... leetcode? Something like that. Codewars. There's a ninja themed one as well. Do a couple google searches and you should have tons.

Oh, and the book JavaScript and JQuery: Interactive Front-End Web Development is a great book for starting out, it's dry as hell, but it's full of everything you want to know. The link is not an affiliate or whatever, I get nothing, just read it.

u/alexsmander · 9 pointsr/web_design

It sounds like you don't understand the basics of programming logic, and not JS / JQuery. There are fundamentals you need to first learn before you take on any kind of programming and that is how it actually works and how things are manipulated.

The difference between HTML / CSS and any programming language is that HTML / CSS are declarative languages meaning you say what you are going to do (i.e. background-color: blue;) whereas programing languages are dynamic. It will take some time for you to get used to, but like all things it requires a lot of practice. I would also suggest reading some books. I bought and read JavaScript and JQuery: Interactive Front-End Web Development and it helped me make sense of things.

Others have said build something instead of just doing codeacademy and I completely agree. Though it will be confusing and hard to begin with, it will help you understand the basics. A few good things you could build could be:

  • A functional web calculator (probably the best)
  • Randomized quote of the day (onClick or load, storing strings as variables and push to an array)
  • Buttons that do different tasks (open a hidden item, make something bigger, etc)
  • Rock, Paper, Scissors (I think codecademy does this).

    I would say do the web calculator, you would have to do the HTML / CSS (yes make it look pretty like the calculator on your phone), and then build the functionality.
u/0b_101010 · 9 pointsr/learnprogramming

Hi! I recommend the following books:

u/bluecoffee · 9 pointsr/algorithms

Skiena's Algorithm Design Manual. CLRS is the other typical recommendation, but I found Skiena to be much more readable.

u/last_useful_man · 9 pointsr/learnprogramming

Wat? No-one's mentioned careercup.com ('Questions' at the top of the page)? Go there and find Amazon's, and many other companies' interview questions. Research the things you don't know, limber up on the variety. It'll be overwhelming, but it's what you need.

Oh, and one recommendation for an algorithms book is Steve Skiena's Algorithm Design Manual. It covers the basics, but goes into /some/ of the more esoteric data structures (and dynamic programmng) as well.

u/bulletproofvest · 9 pointsr/sysadmin

Yep, if you're a Windows admin you need to learn powershell.

This is a great book to get started.

u/EmergentBehavior · 9 pointsr/cpp

I picked up Accelerated C++ and it's, by far, one of the best books I've read. It's terse and provides an amazing amount of detail for its size.

Amazon

u/kmsaelens · 9 pointsr/ITCareerQuestions

The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT (3rd Edition) https://www.amazon.com/dp/0321919165/ref=cm_sw_r_cp_apa_i_YBkxDb2D8ZNHG

/thread

u/MoTTs_ · 9 pointsr/Cplusplus

If good is the priority, I recommend going straight to the source -- the guy who invented the language, Bjarne Stroustrup. You can buy it new for $35, or head to your local library and borrow it for free.

u/rectal_smasher_2000 · 9 pointsr/serbia

ovde je neces naci, tako da bih ti preporucio amazon. obavezno uzmi 2nd edition posto sadrzi najnovije standarde (c++11 i c++14).

kada uzimas knjigu sa neta, proveri bookdepository.com i amazon.com i vidi koja je jeftinija. ako su iste/priblizne cene, uzmi sa bookdepository posto isporucuju mnogo brze od amazona.

u/NotAGeologist · 9 pointsr/computerscience
u/snarfy · 9 pointsr/cpp
u/rcinsf · 9 pointsr/programming

Or you could get the 3rd edition:
http://www.amazon.com/Effective-Specific-Improve-Programs-Designs/dp/0321334876/

with 5 more ways to improve your C++

u/Zaemz · 8 pointsr/programming

This is awesome! I've been slowly getting more and more interested in hardware, and this is something I would absolutely love to do. I just don't know where to start.

I've been reading a couple of books about learning lower level stuff, and planned on working my way up.

I'd really like to get out of webdev and into low-level programming, or even hardware design and implementation. There's sooooo goddamn much to learn, that I doubt I'll be ready without getting a BS in Comp. Engineering, and maybe a master's as well.

(I'm absolutely a beginner, and if anyone is interested in the books I've been reading, these are they:

  1. Code by Charles Petzold

  2. The The Elements of Computing Systems: Building a Modern Computer from First Principles by Noam Nisan and Shimon Schocken

  3. Computers as Components by Marilyn Wolf)
u/lebski88 · 8 pointsr/programming

The link to the book is;

http://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/0262640686/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1217450690&amp;amp;sr=8-1

or uk amazon

http://www.amazon.co.uk/Elements-Computing-Systems-Building-Principles/dp/0262640686/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1217450662&amp;amp;sr=8-1

the title is Elements of Computing Systems: Building a Modern Computer from First Principles.

It looks like a really interesting book. Shame I have banned myself from buying books until I get through some more of the ones sitting on my shelf.

u/losthought · 8 pointsr/sysadmin

Learn Powershell In a Month of Lunches

Read this and you'll be on your way.

u/TurnItOff_OnAgain · 8 pointsr/sysadmin

Check out Powershell in a Month of Lunches

https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617294160

Great starter for getting into powershell

u/perfecthashbrowns · 8 pointsr/linux

This has been one of my favorite books: http://www.amazon.com/Linux-Bible-Christopher-Negus/dp/111821854X/

And I read through this entire book: http://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/

They are both great!

Edit: I can't type much because my internet is going out regularly at the moment, otherwise I'd love to elaborate further.

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/dontgetborn · 8 pointsr/linuxquestions

I've heard that this is the best handbook for UNIX/Linux administration:

http://www.amazon.com/Linux-System-Administration-Handbook-Edition/dp/0131480057

u/shaggorama · 8 pointsr/learnpython

Starts in January: https://www.coursera.org/course/aiplan

EDIT: In case you can't wait a month (which according to /u/sovietmudkipz is apparently a completely unreasonable amount of time to wait for a free college course), check out this textbook: it's my understanding that it's basically the gold-standard for intro-AI education.

u/FranciscoSilva · 8 pointsr/computerscience

Well, for AI, you should prepare for a world of math, math, math, along with computer science and programming (obviously). Understanding an historic vision of A.I. is also important, so I would consider starting to read something like this particular book: Artificial Intelligence: A Modern Approach! This a college-level A.I. book, so be patient if there are things you don't fully understand at first. Work hard and you can do anything you set your mind to!

u/mian2zi3 · 8 pointsr/learnprogramming

I'm reminded of this Ira Glass quote:

https://www.goodreads.com/quotes/309485-nobody-tells-this-to-people-who-are-beginners-i-wish

Are you a professional developer? You might talk to your team lead, manager or other senior engineer on your team about making a plan to improve.

&gt; Death by iteration or death by un-maintainability

Learn about refactoring. This is the classic book:

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

but it is a common idea now. Test-driven development could help with this.

&gt; perfect response with a great code example way better than I could've done it given weeks or months

The key habit here is to ask yourself, "What would I have had to know to come up with this myself?" and then go learn that and internalize it so if you ever see this problem or a related one again, you can solve it. If you do this consistently, you'll have a powerful bag of tools and be able to solve lots of problems easily that you couldn't before.

Finally, it doesn't sound like you have a formal CS education. You might think of going through some undergrad CS courses online (edX, Coursera, MIT OCW, etc.) It takes long-term persistence that few have the patience for, but if you can make it through, they will transform your understanding of computers and development.

u/DonaldPShimoda · 8 pointsr/ProgrammingLanguages

I've peeked at this free online book a few times when implementing things. I think it's a pretty solid reference with more discussion of these sorts of things!

Another option is a "real" textbook.

My programming languages course in university followed Programming Languages: Application and Interpretation (which is available online for free). It's more theory-based, which I enjoyed more than compilers.

But the dragon book is the go-to reference on compilers that is slightly old but still good. Another option is this one, which is a bit more modern. The latter was used in my compilers course.

Outside of that, you can read papers! The older papers are actually pretty accessible because they're fairly fundamental. Modern papers in PL theory can be tricky because they build on so much other material.

u/HikoboshiSama · 8 pointsr/compsci
u/Quintic · 8 pointsr/learnprogramming

Here are some standard textbooks on the subject. When I am looking for a book on a particular subject, I like to look at the class schedules for local universities and see what they are using. A class on programming languages is a standard part of a CS program I believe.

Compilers: Principles, Techniques, and Tools
http://www.amazon.com/Compilers-Principles-Techniques-Tools-Edition/dp/0321486811/ref=sr_1_3?ie=UTF8&amp;amp;qid=1343095509&amp;amp;sr=8-3&amp;amp;keywords=Dragon+Book

Concepts of Programming Languages
http://www.amazon.com/Concepts-Programming-Languages-Robert-Sebesta/dp/0136073476/ref=sr_1_5?s=books&amp;amp;ie=UTF8&amp;amp;qid=1343095607&amp;amp;sr=1-5&amp;amp;keywords=Programming+languages

Programming Language Pragmatics
http://www.amazon.com/Programming-Language-Pragmatics-Second-Michael/dp/0126339511/ref=sr_1_2?s=books&amp;amp;ie=UTF8&amp;amp;qid=1343095647&amp;amp;sr=1-2&amp;amp;keywords=Programming+language+pragmatics

u/phao · 8 pointsr/cscareerquestions

The best way I know how is by solving problems yourself and looking at good solutions of others.

You could consider going back to "fundamentals".

Most programming courses, IMO, don't have nearly as many exercises I think they should have. Some books are particularly good on their exercises list, for example K&amp;R2, SICP, and TC++PL. Deitel's has long exercises lists, but I don't think they're particularly challenging.

There are some algorithms/DS books which focus on the sort of problem solving which is about finding solutions to problems in context (not always a "realistic" one). Like the "Programming Challenges" book. In a book like that, a problem won't be presented in a simple abstract form, like "write an algorithm to sort numbers". It'll be inside some context, like a word problem. And to solve that "word problem", you'll have to find out which traditional CS problems you could solve/combine to get the solution. Sometimes, you'll just have to roll something on your own. Like a new algorithm for the problem at hand. In general, this helps you work out your reduction skills, for once. It also helps you spotting applications to those classical CS problems, like graph traversal, finding shortest plath, and so forth.

Most algorithms/DS books though will present problems in a pretty abstract context. Like Cormen's.

I think, however, people don't give enough credit to the potential of doing the exercises on the books I've mentioned in the beginning.

Some books I think are worth reading which also have good exercises:

u/solid7 · 8 pointsr/learnprogramming

&gt; I'm taking a Unix class in c/c++.

Those are two very different things. Please clarify.

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

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

u/rockinghigh · 8 pointsr/leetcode

You're essentially asking for a computer science class on algorithms. I would recommend:

u/forseti_ · 8 pointsr/java

Its not advertised but it uses Java for the examples.

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

u/Killobyte · 8 pointsr/videos

I've read a few books about WW2 tech and I can't remember exactly which one talked about it - it may have been Alan Turing: The Enigma, or perhaps Simon Singh's The Code Book. I tried searching online but I can't find anything for some reason :/ I hope whichever book wrote about it didn't make it up.

u/B0Boman · 8 pointsr/books

If you're a math geek, just about every review on Amazon for A Million Random Digits with 100,000 Normal Deviates is absolute gold.

&gt;Such a terrific reference work! But with so many terrific random digits, it's a shame they didn't sort them, to make it easier to find the one you're looking for.

.

&gt;The book is a promising reference concept, but the execution is somewhat sloppy. Whatever generator they used was not fully tested. The bulk of each page seems random enough. However at the lower left and lower right of alternate pages, the number is found to increment directly.

.

&gt;I had a hard time getting into this book. The profanity was jarring and stilted, not at all how people really talk. Frankly, the book came off as strictly workshop material. But after about 50 pages, I found myself immersed in the style. What had been stilted became lyrical and engaging. Authors go entire lifetimes without matching the poetry of couplets such as those of Mr. Rand Corporation. I can only wish I had thought of 41145 42820.

u/wrouzhul · 8 pointsr/learnprogramming

Ooooh you're a super new :)

Many people hate it but w3schools can get you started:

u/kidsincatacombs · 8 pointsr/learnprogramming

JavaScript and jQuery by Jon Duckett

Amazing book for anyone starting JavaScript and jQuery. Great examples and clear explainations. Wish Duckett wrote more JS-related books. I'd buy them all!

u/meeeeoooowy · 8 pointsr/soccer

If you have some money and time and want to go full time, there are places like http://theironyard.com that can get you a solid foundation and entry level jobs.

Otherwise https://www.codecademy.com is a great place to get started. /r/learnjavascript is a also great resource as they are open to all questions no matter how "dumb" they are. They go through a lot of things together as well, great place to learn. I'd also really recommend this book.

The hard part is getting the experience to know the best way to do things. I am doing some backend stuff as well (node.js and mongoose) to speed things up.

Once you get enough knowledge and get dangerous my biggest suggestion would be to get a recruiter and do a bunch of random contract work. You'll not only learn faster, but usually there will be smart people to learn from.

u/polycarpgyarados · 8 pointsr/ITCareerQuestions

The senior part is more of a technical grade level and not necessarily management... granted I'm in the lead role here, it's my first time as one. All I can say is what help me spring forward at a lull at mid-level was picking up Thomas Limoncelli's books, [the sysadmin one] (https://www.amazon.com/Practice-System-Network-Administration-Enterprise/dp/0321919165/ref=sr_1_1?ie=UTF8&amp;amp;qid=1512041042&amp;amp;sr=8-1&amp;amp;keywords=thomas+limoncelli) and [the cloud one] (https://www.amazon.com/Practice-Cloud-System-Administration-Practices/dp/032194318X/ref=sr_1_3?ie=UTF8&amp;amp;qid=1512041042&amp;amp;sr=8-3&amp;amp;keywords=thomas+limoncelli) /r/sysadmin recommends them too. These are your best practice books, these tell you why to do things, not how. It will turn you from being the guy that mops the floor in a burning building into knowing when to yell, "FIRE!"

Cert wise, unless a specific company or contract requires it, I don't bother with the time and money on certs if you already have years of experience on the books. I'd probably go for a Security+ and then go for a Red Hat and/or CCNA certification as they are both prestigious. Red Hat is a big deal just by its practical application test.

If you want to go into cloud related stuff, you might want to brush up on your programming. This is what is limiting me, I have very minimal bash scripting experience coming from military in the Windows world then making a move to Linux.

Honestly, I would focus on being both as they both overlap very often unless you are in really large stovepipe enterprise environments, but you never know if you need to make a move to something smaller where you have the many hats role. I'd get your degree in something Computer science related (CS, CIS, EE, CE, etc) and then go RHCSA/CE and maybe Sec+/Net+ or instead of Net+ just go for something Cisco related. My networking is Net+ strength at best and I resent not doing better when I was younger.

EDIT: Also, if you can do the math, BS is Computer Science all the way... sysadmins are still really kind of not doing well in the degree program department, mainly because were so... trade-like I guess. Honestly, we're the new Millwrights like my dad was. We keep the factory going and fix it when production stops. It's kind of cool actually, it's nice to be able to have some kinship to my dad in that way.

u/WiredFan · 8 pointsr/codes

If you're looking for a book that teaches you about codes and practical codebreaking, here are two greats: Cryptanalysis: A Study of Ciphers and Their Solution, by Helen Fouché Gaines and Codes, Ciphers and Secret Writing, by Martin Gardner.

For a historical look try The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography, by Simon Singh. I really loved that one!

u/StarSlayerX · 8 pointsr/sysadmin

My buddy used this. He highly recommended it to me.

https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

u/sandwichboy41 · 8 pointsr/sysadmin

Don't use batch. It's outdated and should only be used for compatibility with very old versions of Windows.

PowerShell is the right way to to do this. I'm assuming when you say "create 20 users in Windows Server 2012" you are referring to Active Directory (AD) users, and not local users. You'll want to use the New-ADUser cmdlet to create the AD users. For importing from a csv file, you will need to use the Import-Csv cmdlet.

I won't tell you how to write the script, you should learn that on your own. The two cmdlets I mentioned should point you in the right direction. If you know nothing about PowerShell and need to learn the basics then get the book Learn PowerShell in a Month of Lunches. The book will teach you everything you need to know to get started with PowerShell.

u/darkroastbeans · 8 pointsr/compsci

Props to you for working through a textbook with python! Someone recommended Concrete Mathematics to me a while back as a good resource for really sharpening my math skills. Knuth is one of the authors, and while the book does not discuss programming at all, I'm interested to see how, as a programmer himself, he explains mathematics.

A Khan video series would be awesome. I think there would be a lot of demand for it.

I think the thing I have the most trouble with is understanding math notation. For some reason all the symbols really confuse me. I can learn a new programming language syntax with relative ease, but when I try to learn math syntax, my mind just goes blank. Not sure why this is an issue.

u/RedSpikeyThing · 8 pointsr/programming

Concrete Mathematics by Graham, Knuth and Patashnik is a great start to almost all of those topics.

u/exoticmatter · 8 pointsr/learnprogramming

Accelerated C++. Unfortunately, there isn't a C++11 update, but this really is the best way to get into C++ if you are already a programmer.

&gt; Also, is there a cpp equivalent to lwjgl?

Dunno - what is "lwjgl"?

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/LaurieCheers · 7 pointsr/programming
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/bixmix · 7 pointsr/VoxelGameDev

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

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

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

    Without a degree program to solidify the concepts, I suspect that the first 4 steps will take at least 2-3 years: about 10-20 hours per week each week.
u/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/lucidguppy · 7 pointsr/learnprogramming

If you don't have this for C++ you should. It really is a good introduction and a good reference.

u/g051051 · 7 pointsr/learnprogramming

Algorithms by Sedgwick and Wayne.

u/fj333 · 7 pointsr/cscareerquestions

Correct! I did not do every question in EPI because there are a lot. But I did probably at least 1/3 of them evenly distributed throughout the book, following a guide in the front on which ones were most important.

Equally important in my prep was The Algorithm Design Manual which I learned of here. It really changed the way I thought about a lot of fundamental data structures and algorithms, and helped me see how many real world problems require graph algorithms to solve.

Finally, I read a LOT of firsthand interview reports from GlassDoor for the company I was targeting.

All in all I spent a couple hours a day for nearly 4 months on interview prep. Before that I'd only had one interview, at a company I didn't care much about, and I bombed it. After those 4 months, I interviewed for my dream job and got it. I don't know that I nailed it, I probably just passed by a hair. But it was enough. Was I overprepared? I dunno. But I was at least prepared enough, which is all that mattered. :-)

u/Zupheal · 7 pointsr/sysadmin
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/krat · 7 pointsr/compsci

CLRS is obviously a good choice, though I found The Algorithm Design Manual even though less known, very useful.

It's divided in two parts: the former is a discussion of many algorithms and data structures, so it covers the foundations like sorting and complexity analysis, then talks about trees, graphs and related problems like minimum spanning tree, TSP, ... The second part of the book is more like an encyclopedia, indeed there are a lot of problem sets, each one with an explanation and several questions you should always pose to yourself when facing those problems as well as several possible solutions.

u/bstamour · 7 pointsr/cpp

If you're looking for books that contain info on auto, lambdas, and any other new C++11 stuff, you're going to have to wait a little bit, as the standard is still very new.

If you're looking to get started though, I would suggest something like Effective C++ which contains a bunch of specific things you can do to write better C++ code. For learning the language, something like Programming - Principles and Practices using C++: it's an intro to programming textbook that focuses entirely on C++. I know you're not a beginner ;) but I've heard really good things about that book.

u/TheLightingGuy · 7 pointsr/sysadmin

If you want him to get a firm grasp on it, There's this book as well: http://www.amazon.com/Linux-System-Administration-Handbook-Edition/dp/0131480057

A friend of mine works for one of the guys who wrote it and my understanding is that it's teaches you more than you thought you knew about linux.

u/mickbayne · 7 pointsr/linuxadmin

I suggest getting a copy of the UNIX and Linux System Administration Handbook.

u/Xiroth · 7 pointsr/compsci

Operating Systems Concepts (AKA The Dinosaur Book) is generally quite well regarded.

Artificial Intelligence: A Modern Approach tends to be the text of choice for teaching AI to undergraduates - it doesn't deal with many of the most modern techniques, but it establishes the common functionalities.

u/ClydeMachine · 7 pointsr/sysadmin

Link for those curious. Thanks for the tip!

Also, there's a CBT Nuggets video series on Powershell for those who dig CBT Nuggets kind of learning.

u/Bowkneeknee · 7 pointsr/sysadmin

If you are looking to learn PowerShell without burning out even harder then I would suggest a book called learn powershell in a month of lunches.

Each chapter takes ~45-60 minutes and it an easy enough read and not too technically dense that you need to focus hard to understand. The concepts start at the absolute basics and add another layer on each chapter.

I am half way through the book now and I know enough now to start building some basic/fundamental scripts.

u/krazylink · 7 pointsr/compsci

Though not really geared to compsci, The Code Book is a great history of cryptography and cryptanalysis from the dawn of time to current. Excellent read.

u/illegible · 7 pointsr/programming

I highly recommend "The Code Book" to any novices interested in this sort of thing, it's readable and entertaining without being insulting or excessively complex.

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/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/elvinguitar · 7 pointsr/AskNetsec

IMO, these books are the best ones for web pentesting:

The Web Application Hacker's Handbook

The Tangled Web

OWASP Testing Guide v4

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/lbkulinski · 7 pointsr/Purdue

Yes, she uses Java and this book.

u/bames53 · 7 pointsr/cpp

Not really.

If you're already familiar with basic programming and just want to get into C++ then: A Tour of C++. If you want to learn to program, and use C++ while doing so, then try Programming: Principles and Practice Using C++

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/tech-ninja · 6 pointsr/ProgrammerHumor

Depends what you want to learn. Some of my favorites are

  • Code by Charles Petzold if you want to know how your computer works under the hood.

  • Peopleware if you want to learn how to manage knowledge workers.

  • Clean Code by Uncle Bob if you want to learn about good practices and program structure. Impressive content, covers much more than I expected.

  • Don't Make Me Think if you want to learn about usability.

  • Algorithms by Robert Sedgewick if you want to learn about DS &amp; algorithms.

  • The Art of UNIX Programming by Eric S. Raymond if you want to learn about the unix philosophy. Lots of hidden gems in there. Have you ever heard: write programs that do one thing and do it well; don't tune for speed until you've measured; imagine all this knowledge distilled to you in one book.

    This a good list to get you started :) most of my favorite books are not language specific.
u/bcarson · 6 pointsr/compsci

I'm a pure math guy but Algorithms by Sedgewick &amp; Wayne is one of the best textbooks I've ever read.

u/Knighthawkbro · 6 pointsr/linuxadmin

Honestly, you are never going to find a way to shortcut you out of this situation. No one answer is going to be perfect and get you from A to B if your already at C. I had a similar experience with programming and web development.

I studied computer networking all my adult life and never thought I would be developing as my career at the moment. It is the burden of knowing too much and not having a clear direction. What I needed was more confidence in my skills which can only really develop over the years through experience.

You say you already know a lot of Linux and Bash concepts. CD/CI pipelines try to abstract a lot of OS related involvement since your code doesn’t need to know how low level kernel operations are happening.

What it sounds like you need is knowledge of OS concepts, not just Linux concepts. I say this because every OS has its own way of doing the same thing one way or another.

For example virtual memory, if you understand the concept of virtual memory in any OS rather than a specific OS’s semantics regarding Virtual memory then I think you would be better off in the long run.

If I am wrong and you are the master of the Linux environment, I believe you just need to deep dive into development strategies and the core principles of CD/CI. Once you have a foundation it doesn’t really mater if you are a Jenkins expert or CircleCI expert, all that matters is if you have a foundation to fall back on.

Edit: if you wanted my two cents on material here are some books I recommend.

The Practice of System and Network Administration

Operating Systems Concepts

UNIX and Linux System Administration Handbook

u/solen-skiner · 6 pointsr/learnprogramming

Check out TECS, its the definite course on that. You start with logic gates and build your way up to an ALU, then a CPU, an assambler, a compiler, an OS and a game :)

u/salamanderoil · 6 pointsr/AskComputerScience

The Elemennts of Computing Systems, aka Nand2Tetris. The book's blurb (from Amazon):

&gt;In the early days of computer science, the interactions of hardware, software, compilers, and operating system were simple enough to allow students to see an overall picture of how computers worked. With the increasing complexity of computer technology and the resulting specialization of knowledge, such clarity is often lost. Unlike other texts that cover only one aspect of the field, The Elements of Computing Systems gives students an integrated and rigorous picture of applied computer science, as its comes to play in the construction of a simple yet powerful computer system.
&gt;
&gt;Indeed, the best way to understand how computers work is to build one from scratch, and this textbook leads students through twelve chapters and projects that gradually build a basic hardware platform and a modern software hierarchy from the ground up. In the process, the students gain hands-on knowledge of hardware architecture, operating systems, programming languages, compilers, data structures, algorithms, and software engineering. Using this constructive approach, the book exposes a significant body of computer science knowledge and demonstrates how theoretical and applied techniques taught in other courses fit into the overall picture.
&gt;
&gt;Designed to support one- or two-semester courses, the book is based on an abstraction-implementation paradigm; each chapter presents a key hardware or software abstraction, a proposed implementation that makes it concrete, and an actual project. The emerging computer system can be built by following the chapters, although this is only one option, since the projects are self-contained and can be done or skipped in any order. All the computer science knowledge necessary for completing the projects is embedded in the book, the only pre-requisite being a programming experience.
&gt;
&gt;The book's web site provides all tools and materials necessary to build all the hardware and software systems described in the text, including two hundred test programs for the twelve projects. The projects and systems can be modified to meet various teaching needs, and all the supplied software is open-source.

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/UltraRat · 6 pointsr/gamedev

For the fundamentals of "thinking in C++" as opposed to other languages I always recommend Effective C++

And I guess if you're in visual studio 12 make sure you're not doing anything in C++11 as I don't know any game studio or library using that as the standard yet even though it's an option in visual studio.

u/llimllib · 6 pointsr/compsci

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

AIMA

Dragon

Naturally, TAOCP.

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

u/Gaff_Tape · 6 pointsr/ECE

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

u/obeleh · 6 pointsr/compsci

Perhaps offtopic but... Some books you should read regardless of CompSci branch

u/EughEugh · 6 pointsr/programming

There are several good books on designing good software:

Code Complete

Design Patterns

Refactoring

u/welshfargo · 6 pointsr/compsci

Discrete math and this textbook.

u/tango_oscar · 6 pointsr/gamedev

Best book to learn C++ in my opinion is Accelerated C++: Practical Programming by Example (350 pages). Right from the start, it teaches people to use STL containers and other C++ constructs, instead of teaching "C with classes" like many other books (including Thinking in C++). Unfortunately, it is outdated so you will have to learn about new features of the language. You can use A Tour of C++ for that(180 pages).

If you have the time and will to learn moder C++ from the start, then I would recommend C++ Primer. Similar in approach to Accelerated C++ but longer(970 pages).

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/thecatbird · 6 pointsr/ethereum

The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography is excellent if you’re interested in this stuff. It takes you through the history of encryption and explains everything well.

u/SleepingMonad · 6 pointsr/Decoders

Here are some resources I've found especially helpful for my own puzzle-making and codebreaking endeavors.

General Overviews and Websites for Getting Started:

u/rdchat · 6 pointsr/ScenesFromAHat

It's the show where you never know what's up next: The RAND Corporation's 'A Million Random Digits'

u/Pantstown · 6 pointsr/learnjavascript

I've said it once and I'll say it again, Eloquent JS is not for beginners. You will get stuck almost immediately, especially with no CS background. And, I haven't read the other two, so I can't really recommend one over the other.

Depending on what you're looking to do/get out of reading a book, you might want to checkout Jon Duckett's Javascript &amp; JQuery. It's much more "noob" friendly, and is much easier and nicer to get

u/tdk2fe · 6 pointsr/linux4noobs

Get the Unix and Linux Administration Handbook, 4th Edition, by Evi Nemeth, Garth Snyder, Trent Hein and Ben Whaley.

This book covers both Ubuntu and other Linux flavors, along with traditional Unix. It is my defacto go-to when I need to look up a topic, and goes into incredible detail about not only how to do things, but also some of the theory behind them. A good example is that it explains how to set up a DNS server, but also details how DNS actually works.

For something cheaper - just google the Rute Manual. This also details a wide array of OS concepts and how they are embodied in Linux.

And while your learning - i'd like to throw this tidbit that I absolutely love from the Rute guide:

&gt;Any system reference will require you to read it at least three times before you get a reasonable picture of what to do. If you need to read it more than three times, then there is probably some other information that you really should be reading first. If you are reading a document only once, then you are being too impatient with yourself.

&gt;It is important to identify the exact terms that you fail to understand in a document. Always try to backtrack to the precise word before you continue.

&gt;Its also probably not a good idea to learn new things according to deadlines. Your UNIX knowledge should evolve by grace and fascination, rather than pressure

u/BitpatternDesignator · 6 pointsr/sysadmin

A must read is UNIX and Linux System Administration Handbook (4th Edition):

www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/

u/Alives · 6 pointsr/sysadmin

See also: http://www.reddit.com/r/linux/comments/cm8y4/any_book_recommendations/?sort=new

Read this book: http://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057
UNIX and Linux System Administration Handbook (4th Edition) [Paperback] Evi Nemeth (Author), Garth Snyder (Author), Trent R. Hein (Author), Ben Whaley (Author)

u/TranshumanWarrior · 6 pointsr/slatestarcodex

&gt; I think that more people will be deterred by a focus on AI safety. It's worse for EA if people think "These people are weird nuts" than "These people are somewhat liberal."

But raw amount of support is not the objective that EA is supposed to be trying to maximize. If that support comes at the cost of making EA into a subset of left-wing political activism, and if an ever increasing proportion of EA stuff gets funneled into social justice and all the standard left-wing culture war causes, then we will be left with a movement that is EA in name only.

AI safety is not as far-out as it was 10 years ago. If someone looks at AI safety and people who support it - such as Stephen Hawking, Elon Musk, Bill Gates, Nick Bostrom and the guy who co-wrote the textbook on AI - and are turned off by it because they think it is crazy, well maybe they have been successfully filtered out as people not possessing the required level of rationality to be beneficial to the movement? I wouldn't have made this argument even 5 years ago actually, because AI risk looked so superficially dodgy even though the arguments are sound.

u/hungry4pie · 6 pointsr/programming

No no, he's Anti-AI: A Modern Approach

u/xDind · 6 pointsr/PowerShell

I taught a powershell class at work a few years ago. We went chapter by chapter through "Lean powershell in a month of lunches"
https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

u/ardwin · 6 pointsr/sysadmin

Anything by Don Jones.

Even look up "Don Jones Powershell" on YouTube will bring up a lot of his powershell stuff. He is entertaining and very informative.

Or pick up his book: http://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080/ref=sr_1_1?ie=UTF8&amp;amp;qid=1372257080&amp;amp;sr=8-1&amp;amp;keywords=don+jones

u/inaddrarpa · 6 pointsr/sysadmin
u/reallybigabe · 6 pointsr/PowerShell

This is probably the most recommended book: https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

Books aren't really my learning style - to me, it's just solve a problem, then solve it gooder

Maybe I should read more....

u/Ghostalker474 · 6 pointsr/sysadmin

http://amzn.com/1617291080

That's what I used, came highly recommended by folks in this subreddit, and I see why. Starts off slow and simple, assumes you have no prior experience in programming. By chapter 4 you're making scripts that show just how awesome PS is.

u/markca · 6 pointsr/sysadmin

A fantastic book I used when I started was Learn Powershell in a Month of Lunches.
https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617294160/

u/Cyberhwk · 6 pointsr/ITCareerQuestions

I think the Powershell in a Month of Lunches series is considered pretty good.

u/jzetterman · 6 pointsr/PowerShell

The best PS book I've come across is Learn PowerShell in a Month of Lunches: https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617294160/ref=sr_1_1?ie=UTF8&amp;qid=1535785632&amp;sr=8-1&amp;keywords=powershell+month+of+lunches

&amp;#x200B;

Also, keep an eye out for the authors in blog posts as you're Googling. Don Jones and Jeff Hicks are both really active on Powershell.org as well as Pluralsight.com.

u/drkwok2 · 5 pointsr/computerscience

Hey when I studied for the exam this book https://www.amazon.com/CompTIA-Certification-Guide-220-901-220-902/dp/125958951X and this guy http://www.professormesser.com/ are extremely helpful, he also does free YouTube lectures, good luck!

u/ATI-RV350 · 5 pointsr/ITCareerQuestions

Definitely not recommended. Make sure you look at what exam series the books you're buying are for - the current A+ is the 901/902. Mike Meyers' book is among the best and most popular, and he's great at explaining things from a more real-world, less technical view. (https://www.amazon.com/CompTIA-Certification-Guide-220-901-220-902/dp/125958951X/ref=sr_1_1?ie=UTF8&amp;amp;qid=1492880166&amp;amp;sr=8-1&amp;amp;keywords=mike+meyers+a%2B)

u/apertur · 5 pointsr/sysadmin

Not to mention that a lot of VMware functions use PowerCLI.

I also vote Powershell.
Edit: Might I also suggest Powershell in a Month of Lunches?

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/djpaec · 5 pointsr/sysadmin

Powershell is a very handy tool to have, but you don't need to 'dedicate' yourself. Go through this book and you'll be a step above a majority of IT professionals easily. https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

u/hosalabad · 5 pointsr/sysadmin

I think it is always safe to look at all of the material in the 70-640 curriculum. Most of it easily applies to 2012+ and you may still see a lot of 2008 systems.

https://www.microsoft.com/learning/en-us/exam-70-640.aspx

Combine the reading with the lab work and you can learn a lot.

Also /r/powershell and Powershell in a Month of Lunches. New version addresses Powershell 3 http://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

u/NastiN8 · 5 pointsr/sysadmin

Rule 1: You better start learning how to teach yourself cause classes are probably not gonna happen. I got this book and taught myself the fundamentals of powershell. You'll need to do something similar. For the application, I'm sure the developer provides an entire site full of documentation for you to use to help develop your skills. It may seem intimidating now, but you'll get used to it.

Note: The powershell book is very easy to find for free if you know where to look.

u/ZeroHex · 5 pointsr/comics

&gt;However, at least at this office, you can have days like today where things slow way down and you can derp around on Reddit until you get more calls or a user gets back to you.

System/Network Administrators (especially at smaller companies) either work well or they work often. I'm getting towards the "well" side of things more and more as I get better, which leaves more time for other activities, like reddit or going through Powershell in a Month of Lunches.

u/Zenkin · 5 pointsr/sysadmin

If you're looking at Powershell, the Learn Windows Powershell in a Month of Lunches is pretty well reviewed.

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/toptrool · 5 pointsr/math
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/silverforest · 5 pointsr/IWantToLearn

Engineer here. The Navier–Stokes equations are expressed using vector calculus.

I'd just point you to books. I highly recommend actually doing the exercises at the end of each chapter.

John Bird - Engineering Mathematics

This is a good book that doesn't assume that you've completed GCSE mathematics. It brings you up to scratch to a level of mathematics I'd expect a first year undergraduate to have. Yes, it starts with fractions. A large chunk of it is geometry and calculus, though it does touch on some statistics and matrices and complex algebra on the way there.
It ends with you being able to solve basic separable 1ˢᵗ order ODEs.

Kreyszig - Advanced Engineering Mathematics

Higher-order ODEs, Linear Algebra, Vector Calculus, PDEs, Complex Analysis, Fourier. Oh, and linear programming and optimization.

There's a recommended study guide and order in the introduction.

Knuth - Concrete Mathematics

Just thought I'd include this here, since you're a programmer. Touches on some continuous and some discrete mathematics essential for computer science.

u/pattakosn · 5 pointsr/Cplusplus

I was also first a C programmer and only started learning cpp later. I have found this book to be excellent:

Accelerated Cpp book

it is intended to complete novices, which you are not. However I think it is still perfect for you because I think that it introduces Cpp the way it should be and not as a C extension. After you are comfortable with the std I would suggest you move to good practices books (effective c++ etc) and/or design patterns books

u/xd43 · 5 pointsr/learnprogramming

You can check out: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/

It's going to be unlikely, you would have to plan the curriculum yourself and get quality books/resources to teach you the material.

Books like http://www.amazon.com/Accelerated-C-Practical-Programming-Example/dp/020170353X

Offer a well planned introduction course into C++

u/beeff · 5 pointsr/hardware

The first thing you have to realize is that computers are the most complex system ever produced by humans. Not only the multiple levels of hardware, but also the large complex software systems required to even just start it up in windows.

The core design idea is that every layer of hardware and software on a computer is a form of translation, changing one formal language into another.

At the very bottom are the laws of physics, which allows us to arrange semi-conductors and other materials to build a small device (a transistor) that encodes negated AND logic on wires that carry electric impulses. Making large circuits of exclusively NAND gates allows you to create any complex computer logic you want. In theory you can use whatever you want that encodes such logic, you can make a computer that works with billiard balls. Transistors are just the current most economic way of building one.

The layer above just the bare circuits is the design of your circuits. You cannot just wire them arbitrarily, there are physical and economic limits. The RAM modules stuck in your motherboard are a design tradeoff. DRAM allows engineers to use less transistors for every encoded bit, but access is slower. The multiple levels of 'caches' on your CPU are also RAM, but encoding every bit with 8 or more transistors for absolute speed. Early on it was thus seen as economically interesting to design different modules separately and have them communicate in some way.

&gt; So, I want to know all about the CPU, RAM

A certain design became popular in the 1950's: the Von Neumann architecture. This is a simple design for a computer with roughly three modules: control, arithmetic and memory. A computer program is basically a language, with its own formal words and verbs. All those words and verbs are somewhere in the memory module of the computer. A specific memory location will always hold the next instruction or verb that the computer has to process. The control module thus continuously retrieves the next instruction, that instruction will ... well instruct the control module what it needs to do. Typically an instruction will make the control module put some words in memory and kick the arithmetic module into action that will transform those words into something else.
Over the years with miniaturization, more and more discrete modules were added to the control chip to make it go faster. We call this now typically the CPU, but it's really a lot of multiple integrated modules that are really good at doing one thing.


&gt; how the computer (software?) communicates with those components.

How do the multiple components communicate with each other? By sending electric signal over wires. How does it know to send what signals? Software controls what signals are sent over what wires. When a company makes a computer component, it will include drivers, which are basically pieces of software that control how it communicates with the CPU and the rest of your computer. This is true for the GPU, your hard-drive, audio chip and every component on your motherboard. A lot of modules communicate through a known protocol, such as the BIOS on your motherboard that starts up your computer. Others are company secrets or just too complex to make standard.

&gt; and GPU, how they work; can use the GPU? Are the streaming units kind of like CPU cores?

The GPU is still essentially a computer, but had a completely different architecture or design to start out with. First up, everything a GPU does can be done by a CPU. For many years, it did. The only reason companies like 3dfx started selling discrete GPU modules is speed. By taking advantage of the specific way graphics are computed, GPU companies were able to design chips that could complete graphics computations a lot faster than the CPU. At first GPUs were basically tasks that were done in software baked into circuits. You push it data and poke some information that triggers certain graphics operations, but you had no arbitrary programs made from instructions like you have on the CPU. NVIDIA introduced programmable shaders on the Geforce 3 in 2001, which were basically little programs that could only use certain limited instructions. The restrictions on those programs grew less and less, and companies started adding more and more of those little processors that could execute those programs. These days there is only a limited amount of fixed-hardware functionality left on GPUs. They have basically become like a massively parallel CPU, only the design tradeoffs are completely different.

CPU vs GPU. In its more basic form, CPUs are made for fast reaction and fast sequential running. GPUs are slow lumbering beasts, but can do many task at once, as long as those tasks don't need to cooperate too much. Using an analogy, when you need to move a thousand boxes, a CPU is a nimble sprinter that will run really fast back and forth for each box, the GPU is a big fat professional mover that will load everything on a lorry and move only once.

Obviously, I'm lying here. Everything is grossly simplified because reality is so much more complex. The basics can be really simple: A CPU talks to a CPU using wires. Similarly, your GPU or CPU talks to your screen using electric wires. That is probably not the insight you were looking for though. But it is on very basic principles that a computer is built up, through layers of abstraction in both hardware and software. Some layers are simply unknown to use, we don't really know how NVIDIA makes your CPU talk to your GPU. You sometimes don't want to know, as long as there is a common language or interface that shields you from the gritty details.

If you want to know essentially how computers work, look through the recommendations in this thread. I would just want to add to that list Elements of Computing Systems for hardware and Structure and Interpretation of Computer Programs for software.

u/theinternetftw · 5 pointsr/compsci

That's kind of besides the point of this post, but is nonetheless awesome, and you posting that does let me use it as a springboard to say these two things:

&gt;Jonathan Blow, the creator of Braid is making a compiler

For the interested, the link to watch that is here.

&gt;I know nothing about making compilers, but it was awesome to watch

Compilers *are* cool, and if you want to make a simple one for fun, try it as the last part of this project. As for needing to know anything before you do it, I went through that book at the same time I was taking my first college CS course, and I managed alright. By the end of it you have a complete platform, from a machine you make from scratch (NAND) up to a compiler for an object-oriented language that runs on the machine you designed yourself.

u/CaptainCaffeine · 5 pointsr/EmuDev

If you're trying to get into the emulator development scene, my recommendation would be to start writing an emulator for a simple system (such as the Game Boy or NES). I, too, wanted to read computer architecture books before I started my own emulator, and it turned out to be a huge waste of time. I already knew 80%+ of the material in the early chapters, but I insisted on slogging through anyway. But when I'm doing boring stuff like that, I make terrible progress on anything.

Maybe you and I learn differently, but to learn efficiently I need some kind of direction to keep me motivated and moving along. Sifting though pages and pages of dense textbook material without an end goal or a particular concept I'm trying to understand, and instead hoping that I'll just absorb general information, doesn't work out. Much of what you read won't stick with you, and you'll space out a lot (or at least I did).

Once I started actually working on my Game Boy emulator, my productivity shot through the roof. I was making so much more progress in learning and programming when I had actual, tangible goals to achieve. So, if you have the programming ability, start doing that sooner rather than later and you'll learn what you need to know as you move along. Start by emulating the memory, then the cpu, then the rest of the stuff. If you're actually interested, I can provide you with some links to help you get started.

----------------------------------------------
Also if you've already taken an intro to digital design course, then you won't learn anything from https://www.amazon.com/dp/0262640686/ref=cm_sw_su_dp.

u/Doriphor · 5 pointsr/computerscience

I would personally recommend this book. (There’s also an associated coursework available at EdX I believe? You can also check out the book’s site at www.nand2tetris.org)

u/AStudyInScarlet · 5 pointsr/UIUC

I have an internship lined up, but I'm really excited to be learning outside of that too. You should check out The Elements of Computing Systems by Nisan and Schocken. I'm going to be working through this book throughout spring semester and the summer. I think it will provide a foundation for every low-level part of CS and help fill in some gaps that I'm missing.

If you're excited about web dev, you could make a website with Ruby on Rails, Django, Flask, Node, Meteor, etc. There's always another good web framework that you could learn.

If you're into system programming, programming languages, or compilers, there are tons of great tutorials and guides online. I'm currently working through Learn C: Build Your Own Lisp. I'm really looking forward to doing Implementing a Language with LLVM. If you didn't already know, LLVM was started here!

If you haven't finished core math yet, there's Linear Algebra on Khanacademy. I think Salman Khan is one of the best teachers I've had. The videos are very concise and very clear. There's also a great series on ML on YouTube. It explains the theoretical underpinnings of the algorithms, but doesn't really show how to use them. If you want to use them, your best bet is the Python library scikit-learn.

For reverse engineering, here's a fantastic challenge site, and here's a good book that you can view online.

There's so much to do, and not enough time to do it! If you constantly work on a few things, little by little, it will all start to accumulate. Good luck and have fun this summer!

u/MexicanJesusJuan · 5 pointsr/compsci

That edition is just out of print. Here's a link to a much cheaper copy.

http://www.amazon.com/The-Elements-Computing-Systems-Principles/dp/0262640686/ref=tmm_pap_title_0

u/opensourcedev · 5 pointsr/compsci

You could go through the projects in:

The Elements of Computing Systems

http://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/0262640686/ref=sr_1_1?ie=UTF8&amp;amp;qid=1449165576&amp;amp;sr=8-1&amp;amp;keywords=elements+of+computing+systems

I think I learned more about Computer Science from these projects than many of the books I've read.
The projects are made for self study and include:

Designing the hardware for a basic computer

Building an assembler for your hardware

Building a compiler for an object oriented language

Building a virtual machine to run programs

u/Franku-Senpai · 5 pointsr/cpp_questions

If you haven't read these books already, what are you doing, go and read them now.

Effective C++

More Effective C++


Effective STL


Effective Modern C++

u/NowTheyTellMe · 5 pointsr/UCI

So this is what I would consider the "Core" reading list for anyone interested in programming games. None of this is really game specific though. These are just the fundamentals you need in order to be an effective Software Engineer.

Learn about...

C++ syntax: Programming: Principles and Practice Using C++ by Bjarne Stroustrup

Software Engineering: Code Complete by Steve McConnell

C++ gems: Effective C++ by Scott Meyer

Software Teams: The Mythical Man-Month by Frederick P. Brooks Jr.

Why we love Joel: Joel on Software by Joel Spolsky

Problem Solving: The Pragmatic Programmer by Andrew Hunt

Common Code Solutions: Head First Design Patterns by Eric Freeman

Pearls!: Programming Pearls by Jon Bentley

I'll do a supplemental on this in a few days that dives into specific topics related to engine development. All of this is generic enough that it will help you regardless of what you do. You'll notice that very little here is actually language specific. Almost all of this is about the art of making software and process of working with a team. These 8 books alone will make you think about making software in a whole new way.

u/salihzain35 · 5 pointsr/learnprogramming

I’m taking Data Structures and Algorithms right now. It’s definitely not an easy class so it’s very ok to struggle. I’m not sure which language are you guys using, but if you’re using Java, then this is an amazing book that starts from the basics! https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/ref=mp_s_a_1_4?ie=UTF8&amp;amp;qid=1536420166&amp;amp;sr=8-4&amp;amp;pi=AC_SX236_SY340_QL65&amp;amp;keywords=algorithms&amp;amp;dpPl=1&amp;amp;dpID=41%2BpJNrGujL&amp;amp;ref=plSrch

On the other hand, you have to build things by your hand in order to understand them. Don’t worry about how quick you get the concepts, it’s ok to meditate on them. After all, what took scientists years to build is not supposed to be understood in an hour. Take your time and good luck!

u/cmd_bat · 5 pointsr/learnprogramming
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/AnonymooseRedditor · 5 pointsr/ITManagers

As far as recommended reading goes I would have a look at the practice of system and network administration (https://www.amazon.com/Practice-System-Network-Administration-Enterprise/dp/0321919165/ref=sr_1_1?ie=UTF8&amp;amp;qid=1539629401&amp;amp;sr=8-1&amp;amp;keywords=practice+of+network+and+system) and The phoenix project. As far as technical courses, I'm assuming your role will be mostly strategic and managerial (unlike some of us in smaller companies where the IT Manager is also expected to be a technical lead) I would focus on the managerial side and surround yourself with technical experts.

u/TheGraycat · 5 pointsr/sysadmin

'Best practice' is such a vague term that you're going to run into issues defining it in a meaningful way for your client's environment.

I'd look at generic guides (u/jhend28 mentions a good one) but also read up on specifics that apply to your environment. For example: best practice for a level 4 data center hosting financial data for banks etc. will not apply at all you a SME with two servers on premise that don't sell direct and hold no Top Secret data.

Have a read of The Practice of System and Network Administration: Volume 1 for a good starting place.

u/NihonNoRyu · 5 pointsr/computerscience
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/ElectricRebel · 5 pointsr/compsci

For compilers:

u/boredcircuits · 5 pointsr/learnprogramming

Start with the Dragon Book.

When it actually comes time to implement the language, I would recommend just writing the frontend and reusing the backend from another compiler. LLVM is a good option (it's becoming popular to use as a backend, it now has frontends for C, C++, Objective C, Java, D, Pure, Hydra, Scheme, Rust, etc). See here for a case study on how to write a compiler using LLVM as the backend.

u/moyix · 5 pointsr/ReverseEngineering

Have you worked through the loop detection in the Dragon Book? There are some slides on it here:

http://www.cs.cmu.edu/afs/cs/academic/class/15745-s03/public/lectures/L7_handouts.pdf

u/blexim · 5 pointsr/REMath

The object you're interested in is the call graph of the program. As you've observed, this is a DAG iff there is no recursion in the program. If function A calls B and B calls A, this is called mutual recursion and still counts as recursion :)

A related graph is the control flow graph (CFG) of a function. Again, the CFG is a DAG iff the function doesn't contain loops.

An execution trace of a program can certainly be represented as a DAG. In fact, since an execution trace does not have any branching, it is just a straight line! However you are very rarely interested in a single trace through a program -- you usually want to reason about all the traces. This is more difficult because if you have any looping structure in the global CFG, there is no (obvious) upper bound on the size of a trace, and so you can't capture them all with a finite structure that you can map into SMT.

Every program can be put into SSA form. The trick is that when you have joins in the control flow graph (such as at the head of a loop), you need a phi node to fix up the SSA indices. If you don't have it already, the dragon book is pretty much required reading if you're interested in any kind of program analysis.

In general, if you have a loop free control flow graph of any kind (a regular CFG or a call graph), then you can translate that graph directly into SAT or SMT in a fairly obvious way. If you have loops in the graph then you can't do this (because of the halting problem). To reason about programs containing loops, you're going to need some more advanced techniques than just symbolic execution. The big names in verification algorithms are:

  • Bounded model checking
  • Abstract interpretation
  • Predicate abstraction
  • Interpolation based methods

    A good overview of the field is this survey paper. To give an even briefer idea of the flavour of each of these techniques:

    Bounded model checking involves unwinding all the loops in the program a fixed number of times [; k ;]. This gives you a DAG representing all of the traces of length up to [; k ;]. You bitblast this DAG (i.e. convert it to SAT/SMT) and hand off the resulting problem to a SMT solver. If the problem is SAT, you've found a concrete bug in the program. If it's UNSAT, all you know is that there is no bug within the first [; k ;] steps of the program.

    Abstract interpretation is about picking an abstract domain to execute your program on, then running the program until you reach a fixed point. This fixed point tells you some invariants of you program (i.e. things which are always true in all runs of the program). The hope is that one of these invariants will be strong enough to prove the property you're interested in.

    Predicate abstraction is just a particular type of abstract interpretation where your abstract domain is a bunch of predicates over the variables of the program. The idea is that you get to keep refining your abstraction until it's good enough to prove your property using counterexample guided abstraction refinement.

    Interpolation can be viewed as a fancy way of doing predicate refinement. It uses some cool logic tricks to do your refinement lazily. The downside is that we don't have good methods for interpolating bitvector arithmetic, which is pretty crucial for analyzing real programs (otherwise you don't take into account integer overflow, which is a problem).

    A final wildcard technique that I'm just going to throw out there is loop acceleration. The idea here is that you can sometimes figure out a closed form for a loop and replace the loop with that. This means that you can sometimes remove a loop altogether from the CFG without losing any information or any program traces. You can't always compute these closed forms, but when you can you're in real good shape.

    Drop me a message if you want to know anything else. I'm doing a PhD in this exact area &amp; would be happy to answer any questions you have.
u/jesyspa · 5 pointsr/learnprogramming

If you're very far already (using the language for over a year, for instance) you could try to fix the gaps by watching Going Native talks and reading A Tour of C++. If you're just starting out, I suggest either getting C++ Primer or The C++ Programming Language and working through that.

u/joker_toker · 5 pointsr/linuxadmin

I'd like to humbly suggest the UNIX and Linux System Administration Handbook for your new admin. It's starting to show its age a bit (published 2010), but still communicates many of the core responsibilities of administrators in a clear manner with historical context.

Also, take a look at the Linux System Administration and Linux Web Operations LiveLessons, which are more current and may be helpful if the new guy learns from video tutorials.

Disclaimer: I am the author.

u/chadillac83 · 5 pointsr/linux

Read this, found it amazingly useful and packed full of knowledge, I recommend this book even to Linux noobs that are trying to get a better feel of the system for desktop use... once they have the basics down that is.

http://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057

u/HedonicLife · 5 pointsr/explainlikeimfive

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

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

u/bradym80 · 5 pointsr/learnprogramming

There is a good explaination about the history of Unix and Linux at the beginning of this book. http://www.amazon.com/Linux-System-Administration-Handbook-Edition/dp/0131480057

You could also watch revolution OS. Or just use youtube.

u/SwimDeep · 5 pointsr/sysadmin

I found the first version of the sys admin book by Evi Nemeth et al helpful years ago. I know a couple people who have found newer versions helpful too. Here is a link to the latest.. http://www.amazon.com/Linux-System-Administration-Handbook-Edition/dp/0131480057

u/NoOneLikesFruitcake · 5 pointsr/sysadmin

I found this book in a thread and I've gone through the first four chapters so far. I only got it a little while ago but I really do like how it reads, and the amount it covers is nice. Check out the table of contents on amazon and you'll see what I mean about the coverage.

Other than that we're looking at the same kind of stuff. Let me know if you get any good leads :P

u/stannedelchev · 5 pointsr/learnprogramming

All the programming best practices you know apply to refactoring as well.

Use source control (Git, Mercurial, SVN, whatever) and commit often, on your own refactoring branch if possible. This way you can "save progress" and revert any changes, should your code get worse in some way.

Also, test a lot. Both during and after the refactoring. Having automated tests really helps. Make a small change, run the tests, make sure everything works, rinse and repeat.

Martin Fowler and other people have books on refactoring. I'd also recommend watching one of his talks.

Lastly, remember that refactoring is not a one-time thing. It's a frequent, ongoing process.
Make small revertible changes in one unit/module at a time, if possible. You don't want to fall too deep in the rabbit hole, and forget what you actually wanted to change.

u/10_6 · 5 pointsr/learnprogramming

Some books that could help you practice algorithms and coding challenges are:

  1. Elements of Programming Interviews

  2. The Algorithm Design Manual

  3. Cracking the Coding Interview

    If you want some actual practice solving challenges with some guidance and/or help, I'd recommend Coderbyte which provides solutions to the problems along with the ability to view other user solutions so you can learn how others solve the same challenges. This article might help you find some other coding challenge websites as well.
u/gtani · 5 pointsr/algorithms

That book has reviewed excellent reviews http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/. This is the standard text, CLR or CLRS http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844/

What you're describing is probably what most people think of as machine learning, data science/mining, and has as much to do with computational efficiencies as it does algorithms' intrinsic behavior.

Also, What programming languages do you know?

Maybe if you look at a cheat sheet http://dlib.net/ml.html and some ML texts (Murphy, Bishop, Barber), those would help (also AIMA by Norvig/Russell)

http://www.amazon.com/review/R32N9EIEOMIPQU/ref=cm_cr_pr_perm?ie=UTF8&amp;amp;ASIN=0262018020&amp;amp;linkCode=&amp;amp;nodeID=&amp;amp;tag=

u/amair · 5 pointsr/math

Some good readings from the University of Cambridge Mathematical reading list and p11 from the Studying Mathematics at Oxford Booklet both aimed at undergraduate admissions.

I'd add:

Prime obsession by Derbyshire. (Excellent)

The unfinished game by Devlin.

Letters to a young mathematician by Stewart.

The code book by Singh

Imagining numbers by Mazur (so, so)

and a little off topic:

The annotated turing by Petzold (not so light reading, but excellent)

Complexity by Waldrop

u/19wolf · 5 pointsr/DataHoarder

If you're at all interested in encryption, The Code Book is a great place to start.

u/Lalaithion42 · 5 pointsr/compsci

The Code Book, which is a nonfiction book about the history and mathematics of secret codes and how to break them, ranging from the earliest and simplest codes, up through the Engima machine and the first computers, through modern RSA, PGP, and (the hypothetically unbreakable) Quantum Cryptography.

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/CaulkParty · 5 pointsr/InternetIsBeautiful

The actual link OWASP Top 10 2013. This list is in the process of being updated so the information isn't exactly accurate anymore.

For more in depth reading I'd suggest The Web Application Hacker's Handbook. Also check out /r/netsec for a good discussion platform.

u/Pardon_my_dyxlesia · 5 pointsr/hacking

I was personally recommended by my mentor Hacking: The Art of Exploitation, and The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws
Also some companions sent me some readings on index articles. I'm not so sure of the titles, but just browse around.

http://slav0nic.org.ua/static/books/

http://hackbbs.org/article/book/

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/scrivens · 5 pointsr/Frontend

If I could do it all over again, I would:

  1. Buy HTML and CSS: Design and Build Websites by Jon Duckett

  2. Buy JavaScript and JQuery: Interactive Front-End Web Development by Jon Duckett

  3. Build stuff. I cannot emphasize this enough - I literally can't, Reddit won't let me. But this is where the rubber meets the road. You can read all the books you want; take all the tutorials but nothing will grow your skills quite like developing something from scratch.

  4. Know this: being a front-end developer means you will always be learning (and if you're not, time for a new job). Good luck!

    ** I am not Jon Duckett but I do love his books.
u/the_cunt_muncher · 5 pointsr/learnprogramming

I recommend this book. I learned HTML/CSS from the HTML/CSS book by those authors. And then after that I went back to a more "textbook" type book to learn further in depth. And then I did the same with Javascript. I felt like those books were a real nice jumping in point because they're so simple and filled with visual examples.

u/loopded · 5 pointsr/cscareerquestions

I'm currently taking it right now (going through web development 101 because I am a complete noob to it), and OP isn't kidding when they say it doesn't hold your hand. I finished up the HTML/CSS basics and just started working through the beginning JS sections (learning basic syntax, if/else statements, switch function). Each lesson can take anywhere from an hour to 3, depending on how quickly you are able to grasp the concepts or how big the hands-on project is.

Don't be afraid to get outside resources either! I picked up this Javascript and jQuery book that has a lot of great reviews, and it gives another perspective/way to learn the language. I might actually trade this back in for the authors book on HTML/CSS because I'm still struggling with those languages. Let me know if you have any questions on it!

u/Zacru · 4 pointsr/compsci

Cracking the Coding Interview: More to help you get a job as a Software Engineering, but full of fun problems even if you do them just for the challenge and learning.

The Code Book: A great overview of the history of Cryptography.

u/TheSummarizer · 4 pointsr/books

A Million Random Digits with 100,000 Normal Deviates by Mr. Rand Corporation. Very strange author, Mr. Corporation. I've read it multiple times and still can't make head or tail of it, particularly p. 15. Some people swear by it though. These people are the same kind of people who think House of Leaves was good too.

u/EnchantressOfNumbers · 4 pointsr/todayilearned

The Amazon reviews of this book are great.

u/yen223 · 4 pointsr/todayilearned

&gt; "The book is a promising reference concept, but the execution is somewhat sloppy. Whatever generator they used was not fully tested. The bulk of each page seems random enough. However at the lower left and lower right of alternate pages, the number is found to increment directly. "

The reviews on Amazon are amazing: http://www.amazon.com/Million-Random-Digits-Normal-Deviates/product-reviews/0833030477/ref=cm_cr_dp_see_all_btm?ie=UTF8&amp;amp;showViewpoints=1&amp;amp;sortBy=bySubmissionDateDescending

u/spidermesh · 4 pointsr/AskNetsec

This list of resources is a good place to start. For security in general you can read security+ book by darril gibson or for deeper knowledge cissp book by eric conrad. For netsec you can look at this and the hacker playbook series. For pentesting oscp certification is the golden standard so if you search online on how to prep for it there are a lot of guides that will give you general idea. Take a look here and here. You can practice here or here.
For websec wahh is the main resource. With practice here, here, here and here.

u/opaque_toaster · 4 pointsr/webdev

Definitely more beginner, but I loved Jon Duckett's books when I was starting out. If you're looking for intro level, front-end stuff, they're very visual and easy to grasp.

HTML &amp; CSS: Design and Build Websites

JavaScript and JQuery: Interactive Front-End Web Development

u/teeceli · 4 pointsr/learnprogramming

Same thing happened to me at my last job. I was actually led to believe in the interview that it was a job relevant to my experience but I quickly learned on day 1 that it wasn't. Read as much as you possibly can in your free time for a while, you would be amazed at how quickly you can pick things up. Three books I recommend as a crash course are:

u/davidddavidson · 4 pointsr/learnprogramming

Data Structures &amp; Algorithms is usually the second course after Programming 101. Here is a progression (with the books I'd use) I would recommend to get started:

u/baghiq · 4 pointsr/learnpython

College text books generally will go more in depth into them. They usually also provide proof of correctness as well as Big O and theta analysis.

Algorithms 4th ed is my favorite, the code is in Java but its text and illustrations are fantastic.

u/MITranger · 4 pointsr/learnprogramming

I really like /u/razeal113 's comment. That's a good algorithm for finding a good algorithm. Starting out with brute force isn't necessarily bad, as it at least gives you a jumping board to start optimizing. The only thing I would add is to increase your knowledge and toolbelt. You can gain a lot of inspiration and learn "how to think" by learning, analyzing, applying, and modifying all the awesome algorithms already out there. Here are some resources:

MOOCs.

u/Bizkitgto · 4 pointsr/learnprogramming

One quick way would be to look up the algorithms courses offered by Stanford, MIT, etc and see what book the syllabus recommends. Some are offered as an MOOC as well (edX, Coursera, Khan, etc).

Also, you can check out these classic texts:

u/CptTritium · 4 pointsr/sysadmin

Thanks for linking this, I hadn't seen it yet. As a Windows admin looking to get into Linux, this seems interesting.

Also, for your automation, I'd recommend Automate the Boring Stuff with Python, if you haven't read it already. It can also be found for free here: Automate the Boring Stuff.

I'll add another plug for The Practice of System and Network Information, even if you have a good feel for the philosophical part of the job.

u/lilhotdog · 4 pointsr/sysadmin
u/halspuppet · 4 pointsr/sysadmin
u/just_insane · 4 pointsr/sysadmin

Is this the one you mean? I am looking for some good books to read as I start to enter the work force.

https://www.amazon.ca/Practice-System-Network-Administration-3rd/dp/0321919165

u/BryceKatz · 4 pointsr/sysadmin

A few thoughts. Hopefully at least one of them will be helpful.

  • Learn How to Speak Boss. Stop reading this post and go watch this. Yes, right now. I'll wait.
  • Your job is just a job. They get your time in exchange for a paycheck. They do not get your physical and/or mental health.
  • Work you ass off for 8 hours then GTFO. Do things you love, with people you like, and don't answer the fucking phone or your work email until your return to work the next day.
  • Long weekends are your friend. You have vacation time. Use it and don't even feel bad. Don't think of 10 days as "two weeks". In a place this crazy, taking an entire week off will be utter hell coming back - assuming you'll even get an entire week off approved. Think of 10 days as "one long weekend every 6 weeks". Put the time off requests in all at once.
  • Work from home is evil. Home is your safe place to get away from work. Working from home defeats this purpose. Fight me.
  • Read Time Management for System Administrators then do what it says.
  • Document how you spend your time. Do this in addition to the ticketing system, because the ticketing system only tracks time on tickets. You have other things to do, too, and that time probably isn't visible to your supervisor.
  • Document what you do. Get in the habit of documenting EVERYTHING. Convince yourself the task isn't completed until the documentation has been updated, and do not move to the next task until the current task is done. Ignore the tendency to "document it later, when things calm down". Pro Tip: Things will NEVER calm down. Build documentation time into your project timelines.
  • There is never enough time. Ever. I don't care how many people are on your team, IT isn't about having no tickets. It's about properly managing the workload.
  • Incremental progress. You aren't going to change things in big chunks. Don't try. Read The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT and do what it says - even if nobody else on the team does.
  • Automate all the things. Seriously. You have better things to do than manually perform system checks. Automate that shit. If it can't be automated, make the business case for upgrade and then automate it.
  • Sometimes it's better to ask forgiveness than ask permission. If your boss is resistant to process automation, pick a small non-critical process, document how much time it takes to do manually, then automate it anyway. Show how much time you saved by not doing this one thing manually. Repeat as necessary until you're the most productive motherfucker on the team. Then use this information to justify a pay increase.
  • Slow the fuck down. My dad used to say, "I'm always in a hurry, but I never rush." Do things as efficiently as possible, but do NOT rush. Rushing causes you to overlook critical aspects of things. Rushing makes you frazzled. Rushing makes you leave your keys on your desk &amp; locks you out of your office. DO NOT RUSH. Things take as long as they take.
  • The phone on your desk is Satan incarnate. Don't answer it unless you absolutely must. (Y'know, like when your boss calls.) Staff will do everything they can to bypass ticketing systems. The ringer on my desk phone is turned all the way down; I can barely hear it. Our phone system integrates with email, so messages show up in my Inbox. Playing back a message from my email is less of an interruption to my workflow than actually talking to some asshat who can't be bothered to submit a ticket. Most of the time, people won't leave a message, anyway.
  • Close your email when you need to focus. Not just minimize the window. Close it completely. If desk phones are Satan, email is one of the Dukes of Hell. Just because someone emails you doesn't mean you have to read it immediately. In fact, replying as soon as a message arrives only serves to encourage users to email you directly as a bypass to the ticketing system. I check my email three times a day.

    I could go on, but most of the above is already in the two books I listed and I'd just be riffing on a theme. I'll leave you with this:

  • They can't take away what you learn. Seriously. Learn it ALL.
  • The best time to find a job is when you have one. Absolutely keep your resume updated and sign up for job alerts on your favorite job site (sent to your personal email, obviously). Take a page from actors &amp; musicians and never stop looking for your next gig.
u/acwaters · 4 pointsr/cpp

I would pick up both a data structures book and a C++ book; for instance, Data Structures and Algorithms in C++ and Programming: Principles and Practice Using C++.

Of course, you can use any data structures book you like; some are better than others, but they all teach the same stuff. But when you're learning the abstract stuff at the same time as basic programming, it can be nice to see examples in your language. Principles and Practice is one that I wholly recommend, though, as an excellent introduction to modern C++.

Also, be aware that there is way more bad C++ material out there than there is good C++ material. If in doubt, check out the semi-official book list or ask around here.

u/ImperialRenaissance · 4 pointsr/learnprogramming

This is a very dense book, but is undoubtedly the best for learning C++ and I would argue programming in general. Just be aware, as with learning the 'vanilla' version of any programming language, you may feel dissatisfied with still not being able to do too much, and while the book does introduce GUI programming with C++ with the Fast Light Toolkit, I would suggest learning SFML or even how to use C++ within the Unreal Engine to truly motivate you.

Remember that there is no utility in learning a programming language in of itself, only in being able to actually do something with it.

u/cfeyer · 4 pointsr/cpp

I've heard good things about

Bjarne Stroustrup

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

https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784

Haven't read it, but I do have Stroustrup's more advanced "The C++ Programming Language" book and can tell you he's a great author.

u/litepotion · 4 pointsr/computerscience

+1. Videos will never do justice. Youll learn more by reading. Ive watched videos since middle school (8 years) and learned a lot of either a) outdated material or b) bad programming habits. Ive corrected all those reading books.

Save yourself the trouble and read this book if youre a beginning to learn c++ especially for the first time then read this: https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784/ref=pd_lpo_sbs_14_t_0?_encoding=UTF8&amp;psc=1&amp;refRID=XFDD6E58W0CWE1K404XZ

u/hyperchromatica · 4 pointsr/gamedev

tldr if you want to learn cpp, get a book. This one is good. Don't attempt to dive into programming with Cpp in unreal, learn cpp first then go into unreal. or just go with unity. Books are your friend.

u/CodeBlueDev · 4 pointsr/learnprogramming

A lot of these are known as "Code Smells". Learn to identify them and try to fix them.

Other good books that may help you:

  • Refactoring
  • The Clean Coder

    Use something like StyleCop or Linting which are supposed to check and compare your code against best practices.
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/ir8prim8 · 4 pointsr/PHP

They are older books, but really changed my way of programming. Refactoring by Fowler and Test Driven Development by Beck.

https://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672
https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530

Feeling overwhelmed and confused can always be solved by breaking things into small enough problems and making enough tests to make sure that your assumptions match reality.

Frameworks can be confusing the way they hide details away from you. Remember though, that with open source, there is nothing to stop you from digging into the framework methods you are calling and see how they work. If you get stuck, sometimes looking at the source will tell you more than looking at the docs. Try multiple frameworks in multiple languages. Once you think you have an idea of the different parts required, try using a template library and an ORM library and write the rest of the code you need to make a basic custom framework.

If you want to see a more direct approach to web services, take a look at Go, where frameworks are almost discouraged. http://thenewstack.io/make-a-restful-json-api-go/

u/ckdarby · 4 pointsr/PHP

I have included some links for more information about myself in the original post.

To have a better idea of the type of person I am these are the books within my arms reach right now:

Design Patterns: Elements of Reusable Object-Oriented Software

[Refactoring: Improving the Design of Existing Code](
http://www.amazon.ca/gp/product/0201485672)

The Mythical Man-Month

Along with some other ~50 similar books I've read.

u/hoolaboris · 4 pointsr/math

Concrete mathematics by Donald Knuth, Ronald Graham, and Oren Patashnik

u/Noamyoungerm · 4 pointsr/learnprogramming

You can program without math, but you'll run into limits. Even math at a high school level will totally change the way you look at and think about some parts of programming.

This is something that I can attest to personally because I began programming with a 3rd grade math level myself. I can't really say what part math had in my perspective on programming, because I was also in the process of growing out of third grade, but when math finally "clicks" somewhere between high school and college, you learn to tackle these things differently.

You can program without math, but if you know the math you'll have a better understanding of what you're doing. You'll look at some problem you're trying to solve and say "hey, that looks awfully similar to a set of equations, instead of trying to solve them inside my program I should solve them by hand and plug in the solution".

Algebra is the really important one. Calculus also doesn't hurt. Trig is a must only if you see yourself doing anything related to graphics or games in the future. I also highly reccomend Concrete Math, but to understand that text you'll have to have a solid grasp of calculus.

u/Shmurk · 4 pointsr/programming

Add Concrete Mathematics if you're a maths retard like me.

u/another_math_person · 4 pointsr/learnprogramming

You might use calculus-based tools for some analysis, like if you look at Knuth's Discrete Math text, you'll see discrete integrals, which are certainly grounded in calculus.

As well, if you look at randomized algorithms, you might need to use some nontrivial probability stuff (like Chernoff Bounds - wiki). That isn't directly calculus, but there is a significant portion of useful probability that requires the use of integrals.

All that said, Linear Algebra is probably more useful for programmers (especially if they're doing graphics or games).

u/QAOP_Space · 4 pointsr/learnprogramming

Accelerated C++ by Koenig &amp; Moo is a very good book that'll get you up to speed in no time.

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/AutoModerator · 4 pointsr/CompTIA


A+ Resources Computing...


Mike Meyers: All In One


Exam Cram


A+ Complete Study Guide


...Popular Books Terminated




Videos Compressing...

Professor Messer's A+ Videos Free


Anthony Harries A+ Series Free


Mike Meyer's A+ Video Series Paid


...Decompressing




A+ Practice Exams Initialized.....


Professer Messer's Pop Quizes Free


Crucial Exams Free


ExamCompass Free


[Exam Cram Practice Questions Paid](https://www.amazon.com/CompTIA-220-901-220-902-Practice-Questions/dp/0789756307/ref=sr_1_2?ie=UTF8&amp;amp;qid=1484881100&amp;amp;sr=8- 2&amp;keywords=a%2B+901+and+902&amp;refinements=p_72%3A2661618011)



....End Transmission



Simmy-Turner activated(sims)....


GTS Labs Paid


Mike Meyers Lab Book Paid


Testout A+ Paid


Prof. Hammonds Free


....End Transmission



Community Driven Content(all free)......

Zac Wilsons A+ Study App


Gemini88mill Advice


Deathrus's Study Habits


DrawMonster's Study Methods

...The Community thanks you!

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

u/zukolfe · 4 pointsr/CompTIA

There is an all in one A+ book on amazon (https://www.amazon.com/CompTIA-Certification-Guide-220-901-220-902/dp/125958951X)
This book is a good read through for general concepts - read it quickly, don't go super hardcore study mode on this book, its quite long. This along with professor messer (free, google it)after quickly reading through was all I used to get my A+.

If you have some knowledge of computers and perhaps built your own you could be ready for a helpdesk role already. I know all I had was "customer service" and some basic technical knowledge before I got my first job. Just be sure to word your customer service skills as if you were on the phone doing customer service - since this may be a large portion of the job. Asides from that - google common helpdesk interview questions, their answers, and then google the specific terms like dhcp and dns to understand how they work.

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/thomasray123 · 4 pointsr/WGU

For a book, I highly recommend CompTIA A+ Certification All-in-One Exam Guide, Ninth Edition (Exams 220-901 &amp; 220-902) 9th Edition

For best overall source of study material, I highly highly recommend
Professor Messer's CompTIA 220-901 and Professor Messer's CompTIA 220-902 A+ Certification Training Course playlists on Youtube. You could use this as your sole resource if you wanted to.

u/NoyzMaker · 4 pointsr/ITCareerQuestions
u/Noobmode · 4 pointsr/sysadmin

Some tips.

r/homelab is a great place if you want to look and ask quiestions

r/SysAdminBlogs is a great place to find other information from other sysadmins

r/PowerShell is great for powershell stuff

If you want to get started on powershell the book "Powershell in a month of lunches" is a great read if you have time!

https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

u/affieuk · 4 pointsr/PowerShell

I would take a look at Don Jones, PowerShell in a month of Lunches
https://www.youtube.com/playlist?list=PL6D474E721138865A
http://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

Not sure if the book is the latest, so have google first.

If you see yourself repeating a task 2 /3 times or more, then look into scripting it, start small and simple and go from there. Once you start seeing the time put into scripting paying off, it'll get easier.

u/twigie4 · 4 pointsr/sysadmin
u/orduz · 4 pointsr/brasil

Não sei se seria complicado demais, mas tem o livro The Elements of Computing Systems: Building a Modern Computer from First Principles (por R$ 99 na amazon).

Ele mostra como construir um "computador", incluindo SO, bootloader, etc, que roda num processador que você também constrói virtualmente. E justamente p/ construir esse processador você parte das portas lógicas mais básicas e vai incrementando.

Não é tão "logic for dummies" mas me parece bem recompensador. (Está na minha wishlist ainda)

u/G_Remy · 4 pointsr/programming

May be you should read The Elements of Computing Systems: Building a Modern Computer from First Principles. With this book you will learn how to build a computer from scratch. Watch the conference of prof Shimon Schocken at Google here.
My second choice is, of course, Structure and Interpretation of Computer Programs. Videos here

u/zzzizou · 4 pointsr/cscareerquestions

It's going to be hard, make no mistake about it. Most places won't want to interview you just based on the fact that you haven't worked for 10 years after graduating. There's going to be some level of disappointment and you'll need to be ready for it.

If your knowledge of C++ comes from school, it's likely at a basic level. Improving on C++ is generally harder than just learning .Net, Java or python.

But if you do feel comfortable with C++, I would suggest getting a more advanced level book rather than relying on online tutorials. My favorite one is Effective C++ from Scott Meyers. Try finding a used version to save money.

You will also need to meet recruiters and be confident but open with them. This is a trial and error with a low hit rate but I would suggest doing it anyway.

You could also sign up for a coursera or udemy course on web development and start creating a project. Make sure you get a github account to showcase your web development skills to any potential employer.

u/knaveofdiamonds · 4 pointsr/programming

It depends exactly what you're looking for, but I'd strongly recommend The Algorithm Design Manual by Skiena ( http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1261657117&amp;amp;sr=1-1-spell ).

It focuses much more on intuitive explanations rather than spending time on proofs, is very readable and has a solid reference section covering over a hundred different algorithms with further references. See Steve Yegge's writeup of the book at http://steve.yegge.googlepages.com/ten-great-books (number 6).

Cormen et al. is good as well, but a bit dry compared to the above book, and with a much heavier focus on the proof side of things.

u/magus517707 · 4 pointsr/learnprogramming

Everyone keeps mentioning programming language resources, but I have yet to see any one mention any algorithm sources. Honestly learn how to develop algorithms, they are language agnostic. And you can practice them on paper. Good luck on your endeavor.

I haven't read this yet, but have heard good things.

https://www.amazon.com/gp/aw/d/1848000693/ref=mp_s_a_1_1?ie=UTF8&amp;amp;qid=1496313668&amp;amp;sr=8-1&amp;amp;pi=AC_SX236_SY340_FMwebp_QL65&amp;amp;keywords=The+Algorithm+Design+Manual&amp;amp;dpPl=1&amp;amp;dpID=41s5pnqOlyL&amp;amp;ref=plSrch

u/Birkal · 4 pointsr/UCSD
u/Raynefire · 4 pointsr/PowerShell

Learn Windows PowerShell in a month of lunches is a great start!
https://www.amazon.com/dp/1617294160


That walks you through some of the basics.


Once you feel comfortable using Get-Help and Get-Member, you should be able to slowly work through any problem that you want to solve, by reading documentation on each cmdlet via get-help and analyzing objects with get-member.

u/matthewaveryusa · 4 pointsr/cpp

I just looked through all my books. It's actually hard to find a book with large segments of good code. This is probably the worst book when it comes to good c++:

http://www.amazon.com/Numerical-Recipes-The-Scientific-Computing/dp/0521750334/ref=pd_sim_sbs_b_15

The best is probably scott meyer's effective c++. It gives small sections of good code and all 55 tips are gold (or silver)

http://www.amazon.com/dp/0321334876/ref=rdr_ext_tmb

u/yberreby · 4 pointsr/programming

When I started getting interested in compilers, the first thing I did was skim issues and PRs in the GitHub repositories of compilers, and read every thread about compiler construction that I came across on reddit and Hacker News. In my opinion, reading the discussions of experienced people is a nice way to get a feel of the subject.

As for 'normal' resources, I've personally found these helpful:

  • This list of talks about compilers in general.
  • The LLVM Kaleidoscope tutorial, which walks you through the creation of a compiler for a simple language, written in C++.
  • The Super Tiny Compiler. A really, really simple compiler, written in Go. It helps with understanding how a compilation pipeline can be structured and what it roughly looks like.
  • Anders Hejlsberg's talk on Modern Compiler Construction. Helps you understand the difference between the traditional approach to compilation and new approaches, with regards to incremental recompilation, analysis of incomplete code, etc. It's a bit more advanced, but very interesting nevertheless.

    In addition, just reading through the source code of open-source compilers such as Go's or Rust's helped immensely. You don't have to worry about understanding everything - just read, understand what you can, and try to recognize patterns.

    For example, here's Rust's parser. And here's Go's parser. These are for different languages, written in different languages. But they are both hand-written recursive descent parsers - basically, this means that you start at the 'top' (a source file) and go 'down', making decisions as to what to parse next as you scan through the tokens that make up the source text.

    I've started reading the 'Dragon Book', but so far, I can't say it has been immensely helpful. Your mileage may vary.

    You may also find the talk 'Growing a language' interesting, even though it's not exactly about compiler construction.

    EDIT: grammar
u/fluicpana · 4 pointsr/italy

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

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

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

  2. The Structure and Interpretation of Computer Programs

  3. Un buon libro di Assembly

  4. The C programming language

  5. Compillers

  6. Code complete, The practice of programming

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

  8. Un linguaggio a oggetti, magari Programming Ruby

  9. O/E Python, Dive into Python

  10. Design patterns

  11. Impara un linguaggio funzionale.


    Da qui puoi partire e specializzarti in quello che ti interessa

u/dstrott · 4 pointsr/aerospace

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

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

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

Probably want to learn something about numerical analysis:
Numerical analysis

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

u/djsupersoak · 4 pointsr/sysadmin

I would highly recommend you check out the UNIX and Linux System Administration Handbook.

It not only goes over a baseline of technical sysadmin (especially linux) concepts, but really shows you how to be a good admin. There is more to it than technical know-how. I'd recommend picking this one up.

u/sysopsbkms · 4 pointsr/sysadmin

First get yourself a copy of the Unix and Linux System Administration Handbook by Evi Nemeth (who is still missing at sea).

u/ihatefarts · 4 pointsr/linuxadmin

This book has saved my ass countless times. It has a bunch of great knowledge and gives you a chance to catch up on things you might have forgotten. I highly recommend you purchase this and keep beside your desk/cube, at least until you become familiar with the job duties.

http://www.amazon.com/Linux-System-Administration-Handbook-Edition/dp/0131480057

u/off_z_grid · 4 pointsr/linux

First off, what are you doing now?

Here is some advice from a 20-year sysadmin who does devops and hobbyist development stuff:

Buy this book. You won't get better advice from anyone anywhere. It's expensive, but BUY THE FREAKIN BOOK: https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057

Install some VM system like VitualBox and start playing with either Debian OR Ubuntu, AND CentOS. Install both numerous times and give yourself some extra partitions to format and play with. Read about some feature or thing and then go mess with it.

Eventually go after RHCSA/RHCE.

Learn the bash shell. Learn how to write real scripts with while/until loops and if/thens, arrays, and other stuff. That'll take time, but put some focus on it.

Don't get overwhelmed. Just start learning one thing, then the next, and go from there. The rabbit hole goes deep.

u/foofusdotcom · 4 pointsr/sysadmin

I'm surprised no one has mentioned the System Administrator's Handbook. I've got editions 1, 2 and 3 on my bookshelf.

u/delias_ · 4 pointsr/linuxadmin

Fundamentals is what you need to know to get through some first round interviews. Explain the boot process in detail from pressing the power button to getting a login prompt -- how does init work, how do run levels work, how does systemd differ? What is getty? pam?

DNS is so much more than just what that rap covers, so if you put it on your resume you better damn well know it. Tell me about the concept of glue records, what is a root hints file, know how to use dig at the very least, how do you switch the order in which the resolver library checks it sources? What is the truncated bit in a DNS packet for?

Know debugging and tracing beyond the usual "top" or "sar" to get real detailed data on what a process is doing. Strace, ltrace, tcpdump, gdb (how to take a stack trace and dump a core), sysdig, perf events, dtrace4linux, vmstat, slabtop, pmap, etc

DHCP is another one like DNS that people like to say they know, but you should know about DHCP relay/ip helper, pxeboot, the actual protocol order of events. Check it out in wireshark.

How do processes and threads differ, really? Lots to talk about here even down to shared memory space, system calls, etc

What is swap, really? What are page faults? How does kswapd behavior change when you don't run with swap?

Know Netstat/ss. Know that tcp is a state machine. What does a bunch of SYN_SENT in netstat imply? Difference between tcp's RST and FIN?

Stateful vs stateless is more than just a tcp/udp difference, it's a fundamental concept to so many aspects of technology.

Basically know what's in this book: http://www.amazon.com/Linux-System-Administration-Handbook-Edition/dp/0131480057

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/koderpat · 4 pointsr/learnprogramming
u/anon35202 · 4 pointsr/artificial

Does someone have a copy of the leaked self driving car code and post it on github?

Heck, even a reasonable implementation of Thrun's Simultaneous localization and mapping algorithm and embedded A star all wrapped in the AI code would be nice.

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

He talks about it in Chapter 25 section 3 of: https://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1487948083&amp;amp;sr=1-1&amp;amp;keywords=ai+a+modern+approach

He describes it in: https://www.udacity.com/course/artificial-intelligence-for-robotics--cs373

But he only describes how you would implement it, he doesn't hand out the finished code.

Gimme.

u/Soupy333 · 4 pointsr/Fitness

If you're interested in this stuff (and just getting started), then I highly recommend this book - http://www.amazon.com/Artificial-Intelligence-Modern-Approach-Edition/dp/0136042597

When you're ready to go deeper, then this one is even better http://www.amazon.com/Machine-Learning-Tom-M-Mitchell/dp/0070428077/ref=sr_1_2?s=books&amp;amp;ie=UTF8&amp;amp;qid=1341852604&amp;amp;sr=1-2&amp;amp;keywords=machine+learning

That second book is a little older, but all of its algorithms/techniques are still relevant today.

u/mhatt · 4 pointsr/compsci

I would repeat jbu311's point that your interests are way too broad. If you're interested in going into depth in anything, you'll have to pick a topic. Even the ones you mentioned here are fairly broad (and I'm not sure what you meant about concurrency and parallelization "underscoring" AI?).

If you want to learn about the field of natural language processing, which is a subfield of AI, I would suggest Jurafsky and Martin's new book. If you're interested more broadly in AI and can't pick a topic, you might want to check out Russell &amp; Norvig (although you might also want to wait a few months for the third edition).

u/sciencifying · 4 pointsr/compsci

It is hard to answer this question without knowing your background. If you are really interested, I suggest you read this book (especially part three) on Artificial Intelligence so you can understand how automated theorem proving relates to AI. In my opinion, automated theorem proving is not a particularly interesting problem in modern artificial intelligence, since representing real-world problems using symbolic logic is almost always impractical.

However, the problem is still interesting for computer assisted theorem proving, and boolean satisfiability is a very important problem in the theory of computation.

u/Artaxerxes3rd · 4 pointsr/Futurology

Stuart Russell, the man who literally wrote the book on AI, is concerned.

Plenty of prestigious people on the cutting edge of the research in the field are concerned.

Just because you've only heard the household-name-level famous people talk about it, it doesn't mean that the genuine, in-the-thick-of-it experts aren't concerned either.

As for the 10~20 years figure, you're right that it is unlikely that AI will be made in that timeframe. However, the claim was merely that it is possible to create with enough resources in that timeframe, which I think is reasonable. Since you care about what the experts think, here is a summary of the best information we have about when they think this will happen.

&gt;Median estimates for when there will be a 10% chance of human-level AI are all in the 2020s (from seven surveys).

&gt;Median estimates for when there will be a 50% chance of human-level AI range between 2035 and 2050 (from seven surveys)

___
AI: A Modern Approach is the best textbook on AI by far

u/SneakyPhil · 3 pointsr/sysadmin

This is a very good book. Debian-isms you can learn as you go, but system administration concepts are useful throughout many distributions.

https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057

Other than that you have to set goals for yourself. Have you tried starting up 2 virtual machines and had them communicate with each other?

u/ryanklee · 3 pointsr/linux
  • Read books. Like this.
  • Try other *NIXs.
  • Compile your kernel.
  • Build (and maybe maintain) a package for your distro.
  • Learn some shell scripting in bash.
  • File detailed bug reports.
u/peppajiggapuff · 3 pointsr/linux

I find reading books is the best way to expand ones horizon on a certain topic. UNIX and Linux System Administration Handbook should be an excellent read for you.

u/guffenberg · 3 pointsr/linux

I second this one

http://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/

It could be a good idea to check which books some well regarded universities are using.

u/matthewdtwo · 3 pointsr/sysadmin

I found this to be helpful when I started out. The details are a bit outdated at this point, but it's still got many relevant points.

u/wombatsquad · 3 pointsr/ITCareerQuestions

Step 1: Buy and read this

u/canoe_lennox · 3 pointsr/CentOS

If you are looking for a dead tree, this book here has been recommended by a number of people I know.

http://www.amazon.com/Linux-System-Administration-Handbook-Edition/dp/0131480057/ref=pd_sim_b_2?ie=UTF8&amp;amp;refRID=05JZDWW6GA57W5F0SG8D

u/paultypes · 3 pointsr/programming

Common Lisp remains a touchstone. I highly recommend installing Clozure Common Lisp and Quicklisp and then working through Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp and Artificial Intelligence: A Modern Approach with them. Although I'm now firmly in the statically-typed functional programming world, this has been part of my journey, and it will change how you think about programming.

u/groundshop · 3 pointsr/artificial

Here's the course webpage for an intro AI course from a good professor on the topic

Good overall book on the topic (Russel &amp; Norvig - AI: A Modern Approach)

u/Rigermerl · 3 pointsr/rmit

I think they use this:

https://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597


Decent book (the bible for AI apparently).

u/KnightOfDark · 3 pointsr/artificial

If you have a rudimentary understanding of algorithms, I would suggest Artificial Intelligence: A Modern Approach, by Stuart Russel and Peter Norvig. The book is comprehensive, well-written, and covers a wide area of different techniques and approaches within AI. Be aware that the book is written as a textbook, so do not expect philosophy or speculation inside - only what is possible and feasible given current state-of-the-art.

u/blindConjecture · 3 pointsr/MachineLearning

That was a phenomenal article. Extremely long (just like every piece of writing associated with Hofstadter), but excellent nonetheless. I'm admittedly sympathetic to Hofstadter's ideas, not the least of which because of my combined math/cognitive science background.

There was a quote by Stuart Russell, who helped write the book on modern AI, that really stood out to me, and I think expresses a lot of my own issue with the current state of AI:

“A lot of the stuff going on is not very ambitious... In machine learning, one of the big steps that happened in the mid-’80s was to say, ‘Look, here’s some real data—can I get my program to predict accurately on parts of the data that I haven’t yet provided to it?’ What you see now in machine learning is that people see that as the only task.”

This is one of the reasons I've started becoming very interested in ontology engineering. The hyperspecialization of today's AI algorithms is what makes them so powerful, but it's also the biggest hindrance to making larger, more generalizable AI systems. What the field is going to need to get past its current "expert systems" phase is a more robust language through which to represent and share the information encoded in our countless disparate AI systems. \end rant

u/weelod · 3 pointsr/artificial

piggybacking on what /u/T4IR-PR said, the best book to attack the science aspect of AI is Artifical Intelligence: A Modern Approach. It was the standard AI textbook when I took the class and it's honestly written very well - people with a basic undergraduate understanding of cs/math can jump right in and start playing with the ideas it presents, and it gives you a really nice outline of some of the big ideas in AI historically. It's one of the few CS textbooks that I recommend people buy the physical copy of.

Note that a lot of the field of AI has been moving more towards ML, so if you're really interested I would look into books regarding that. I don't know what intro texts you would want to use, but I personally have copies of the following texts that I would recommend

  • Machine Learning (Murphy)
  • Deep Learning Book (Goodfellow , Bengio)

    and to go w/ that

  • All of Statistics (Wasserman)
  • Information Theory (Mackay)

    for some more maths background, if you're a stats/info theory junky.

    After all that, if you're more interested in a philosophy/theoretical take on AI then I think Superintelligence is good (I've heard?)
u/LastMan0nMars · 3 pointsr/AskProgramming

I can recommend this (free) course:
https://www.udacity.com/course/intro-to-artificial-intelligence--cs271

You certainly dont need a degree (it helps of course) but most you need is dedication and perserverance.

In regards to math you need a good (more than)-basic understanding of statistics, linear algebra, algorithms and you also need to develop good data analysis skills.

If you want to get serious with AI this book is fantastic (atleast it helped(still does) me alot): https://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597/ref=sr_1_2?ie=UTF8&amp;amp;qid=1506722436&amp;amp;sr=8-2&amp;amp;keywords=artificial+intelligence+a+modern

and by the way check out this thread maybe:
https://www.reddit.com/r/artificial/comments/6cnlr6/monthly_how_to_get_started_with_ai_thread/

u/nimblerabit · 3 pointsr/compsci

I learned mostly through reading textbooks in University, but not many of the books we were assigned stood out as being particularly great. Here's a few that I did enjoy:

u/UpAndDownArrows · 3 pointsr/learnprogramming

First time see that site, but I would recommend reading:

u/d357r0y3r · 3 pointsr/programming

He hits on a lot of the same points in his book: http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672/

Worth a read, certainly had an impact on how I approach refactoring and design in general.

u/avocadoblain · 3 pointsr/web_design

HTML &amp; CSS by John Duckett was very helpful when I was first starting out with front end dev. He recently released a followup on Javascript &amp; Jquery that is also quite good.

u/hiyaduck · 3 pointsr/web_design

He also wrote a book called [JavaScript and Jquery]
(http://www.amazon.co.uk/gp/aw/d/1118531647?cache=3e10930602aec822ac1b09f06d245fb8&amp;amp;pi=SY200_QL40&amp;amp;qid=1413723858&amp;amp;sr=8-1#ref=mp_s_a_1_1) , which is an awesome book. Beautifully designed and easy to follow.

u/Xulbehemoth · 3 pointsr/CompTIA

The Mike Meyers book for the 901/902 has a decent set of test questions. Can be found here

u/ilikedatsyuk · 3 pointsr/WGU

It all depends on what kind of personal experience you've had. Most people would find the A+ to be easiest. It requires 2 exams (220-901 and 220-902) on a wide variety of topics such as hardware, networking, mobile devices, and security, but it doesn't go too deep into any particular topic.

You can use the Professor Messer videos on Youtube, Mike Myers' book, and the practice tests at examcompass.com and crucialexams.com to prepare.

u/Reaps21 · 3 pointsr/personalfinance

About a month.

This is the book I studied with this book, I did the first 15 chapters took the first test, studied the second half and took the second test to get my cert.

u/acolyte_to_jippity · 3 pointsr/sysadmin

glad to hear it.

btw, here:

clicky A+
clicky Net+
clicky Sec+ &lt;--careful, this test is being updated soon, the next version should be coming out in late 2017, with exam guides dropping early 2018. This specific book will be outdated, though still a fantastic resource. Might want to hold off if you're serious about taking the Sec+ exam until the next version, this one comes out.

grab a hardcover copy and start learning!

u/Harambe440 · 3 pointsr/personalfinance

You can get your certification in about 30 days depending on what knowledge your already have now if you really buckle down and take this serious.

  • Read Ch1 Mike Meyers book

  • Watch the corresponding videos on YouTube by Professor Messer. Messer's videos are in order of the CompTIA exam objectives not the book, so you'll have to jump around a bit.

  • Do the practice questions at the end of Ch1. Don't just figure out the answer to the question, but instead be able to explain why the other answers are incorrect. Try to create a question for each possible answer - this turns 20 questions into 80. Re-Read any portion of the chapter you have struggled with. You should be getting 90% or higher on the practice questions


  • Repeat steps with the remaining chapters of the book.


  • Take the practice exam at the end of the book.


  • Based on your results of the practice exam, re-study the portions of the book you struggled with. TechExams has additional study material/practice tests. So does Skillset. Take as many practice tests as you can. Again you should be shooting for 90% or better.

  • this is a great book too.

    More info here


    Do a chapter a day and you'll finish the Mike meyers book in 30 days or less if you read more.
u/root-node · 3 pointsr/PowerShell

The best way I found to learn something is to find a project that relies on it.

For example, I never knew any powershell a few years ago, but I was given a project to write some QA scripts for work. That turned into a 8000+ line modularised script that anyone can use and create plugins for.

I am currently working on building servers and applications using PowerShell (installing and configuring AD, SQL, MSCS, RDP, ...)


If you haven't already, buy the book "Learn PowerShell In A Month Of Lunches" (https://www.amazon.co.uk/dp/1617291080) It's the top rated book by everyone.

u/binarycow · 3 pointsr/networking
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/Silent331 · 3 pointsr/sysadmin

http://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

You can find a pdf of it somewhere on google as well. This book is possibly one of the most valuable things for a sysadmin for windows to have. Seriously.

u/eramnes · 3 pointsr/sysadmin

/r/powershell is a nice place to begin and there are a number of links on the sidebar that can help get you started. When I was getting started I used the book Windows PowerShell Unleashed which I really liked. I have heard good things about Learn Windows PowerShell In A Month Of Lunches but I haven't had the chance to look in to it myself.

For free online resources I like ss64 and I also referenced computerperformance.co.uk when getting started.

u/admlshake · 3 pointsr/sysadmin

I think they just released an updated version of the book for v5...
Yup here it is

u/almostdvs · 3 pointsr/sysadmin

First, read our Wiki. It is very thorough and answers a lot of these common questions such as

day to day? The Practice of System and Network Administration
And the topical reference books listed below.

Books to help in shaping a sysadmin? The above &amp;:
The Phoenix Project
Time Management for System Administrators


Topical Books I see mentioned often and have been very helpful to me:
Powershell in a month of lunches
Learn Python the hard way
Unix and Linux System Administration Handbook
Windows Server 2016: Inside Out

Group Policy
AbsoluteBSD
FreeBSD mastery:ZFS
CCNA
RHCSA/RHCE
Pro Puppet
SSH Mastery

On my docket:
FreeBSD Mastery: Advanced ZFS

Michael W. Lucas and Thomas Limoncelli are very good sysadmin writers, you can't go wrong with a topic they have chosen to write about.

Most of the *nix stuff assumes a baseline knowledge of how to use a unix-based system. I learned as I went but did pick up an old copy of Unix Visual Quickstart Guide not too long ago at a used books sale, which seems like a good starting place for someone overwhelmed with sitting at a terminal and being productive.
I notice I don't have any Virtualization books, perhaps someone else can fill in good books. Most of my knowledge regarding virtualization and network storage has been a mix of official docs, video training, and poking at it. Seems innate but it isn't.

u/gaz2600 · 3 pointsr/PowerShell

I was like you no programming experience at all. I learned from these videos, I suggest you download them as MS is decommissioning this site soon.

  1. Getting Started with Microsoft PowerShell
  2. Using PowerShell for Active Directory

    and everyone will recommend reading Learn Windows PowerShell in a Month of Lunches although I'm not a big reader and have not gone through most of this book. The two video modules will give you a good start. This reddit has also helped ALOT.
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/digitizemd · 3 pointsr/algorithms

The Princeton / Coursera algorithms course. It is great. You can find lectures (since the first course finished recently, and the second course is halfway done) here (you need to change the number at the very end. I think it starts at 10).

There is a book that's relatively cheap: http://www.amazon.com/Algorithms-4th-Edition-Robert-Sedgewick/dp/032157351X

And there's a booksite: http://algs4.cs.princeton.edu/home/

This course is done entirely in Java.

u/jaquino94 · 3 pointsr/algorithms

Algorithms by Robert Sedgewick

Good book with the code written in Java

u/a_few_benjamins · 3 pointsr/cscareerquestions

Algorithms, 4th Edition and the companion Coursera Course are great if you are already familiar with a mainstream language.

u/ProbablyRickSantorum · 3 pointsr/gamedev

I own Algorithms (4th Edition) . It's very well explained and uses Java as a base although it's easily readable if you are proficient with any other languages.

u/xxxabc123 · 3 pointsr/ProgrammerHumor

I agree with the Amazon review. Unless you need for a class, or learn an advanced topic not available in other places, I wouldn't touch this book ever. There are much easier algorithms books to read such as https://www.amazon.com/gp/product/032157351X/ This book isn't introductory at all as mentioned on Quora by multiple people https://www.quora.com/What-are-the-best-books-on-algorithms-and-data-structures

And if you've bought this for algorithms interviews preparation, it's better to buy cracking the code interview or similar which has explicit instructions for interview questions.

One more thing to add to the review was the algorithms are written in pseudocode, array indices start with 1 instead of 0, some lines refer to other pages in the book so you can never read a code inside this book sanely.

u/MirrorLake · 3 pointsr/compsci

For anyone looking, the physical copy has also dropped on Amazon recently down to $50.

http://amzn.com/032157351X

u/Byzii · 3 pointsr/sysadmin

Even earlier versions would be a very good read despite the DevOps hype, but the 3rd (new) version includes best DevOps practices even without having any devs.

u/jandersnatch · 3 pointsr/ITdept

Learn to program. Edx/Harvardx CS50x gets pretty good reviews.
Learn to and make a habit of writing extensive technical documentation on everything you do.
Read this book. https://www.amazon.com/Practice-System-Network-Administration-Enterprise/dp/0321919165/ref=sr_1_1?ie=UTF8&amp;amp;qid=1480705767&amp;amp;sr=8-1&amp;amp;keywords=The+Practice+of+System
Apply everything you learn to the current systems you work with

u/Eric-SD · 3 pointsr/sysadmin

If you wait a few weeks, you can pick up the new edition of this book:
https://www.amazon.com/gp/product/0321919165/

If you think "there is nothing to do", you are probably in "don't know what you don't know" territory, which is fine. They key is to first start discovering what you don't know, then you can start taking steps to resolve it by learning.

As you learn, you will realized that there is far more that you don't know than you though, and the side effect will be that you feel dumber and dumber, but you will actually be improving at your job.

u/TheBowtieClub · 3 pointsr/Cplusplus

Stroustrup's book is considered (one of) the best for beginners. Lots of exercises in every chapter.

Link: https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784

u/Maindric · 3 pointsr/learnprogramming

Programming: Principles and Practice using C++ 2nd Edition is made by the creator of C++ himself. This book is meant for first year computer science students to learn to program via C++. There are sections within the book that cover GUI and other UI conventions, however it focuses mostly on programming principles. It is a great book to introduce yourself to Programming and C++.

u/duochimo · 3 pointsr/Cplusplus

10/10 would recommend Programming Principles and Practices by Stroustrup

https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784

u/lagolinguini · 3 pointsr/UIUC

I would recommend Stroustrup's book for C++. Then, like the other's suggested, hit up Hackerrank or something and then maybe try some projects of 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/hahanoob · 3 pointsr/cpp_questions

If you're only gonna read one book it should probably be this one: https://www.amazon.com/dp/0321992784/

That said, the idea of my producer "deep diving into the project" absolutely terrifies me. If you want to learn the basics of programming to make communication a little easier then that's great but nobody is going to want you touching code. Being able to write C++ - especially C++ learned quickly - doesn't make you a good developer.

u/PsychoI3oy · 3 pointsr/programming

The Code Book for a primer on the basics up through some simple explanations of modern computer cryptography and the Handbook of Applied Cryptography for serious math proofs of a lot of the modern crypto standards in use today.

u/ginger_snapping · 3 pointsr/DnD

https://www.amazon.com/Code-Book-Science-Secrecy-Cryptography/dp/0385495323/ref=asap_bc?ie=UTF8

This book is great. I read it a number of years ago and couldn't get enough.

u/audaciousterrapin · 3 pointsr/books

I first heard about the french 'La disparition' and the translated 'A Void' in The Code Book by Simon Singh (which in itself is a great book) in the chapter describing frequency analysis with regard to cryptanalysis. [With 'e' being the most frequently used letter in english.]

u/pretz · 3 pointsr/math

If you want background reading about the history try 'the code book' http://www.amazon.com/Code-Book-Science-Secrecy-Cryptography/dp/0385495323 I found it really interesting when I first read it, It is easy to read and got me interested in the subject.

a book like this one is good: http://www.schneier.com/book-applied.html for a general treatment.

u/GloobsGuy · 3 pointsr/compsci

It's really Comp Sci, but I really enjoyed The Code Book. Goes over secret codes over time, starting with the basics, ends with Cryptography, goes over some of Alen Turing's work. Over all a good, fascinating read.

u/doctorwaffle · 3 pointsr/books

If you enjoy Simon Singh, check out The Code Book.

u/wajib · 3 pointsr/dndnext

In addition to illusory script and other magical solutions (possibly even layered on top of them for added security), check out some historical spy stuff:

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

I also really recommend The Code Book:

https://www.amazon.com/Code-Book-Science-Secrecy-Cryptography/dp/0385495323/

u/InfinityFlat · 3 pointsr/math
u/37o4 · 3 pointsr/crypto

Simon Singh's book is fantastic. It was one of my early reads in the field of crypto. I read it when I was in middle school so I don't think it would be too techy for you! But it covers a ton of topics, including topics that will be relevant into the future. So in short: yes, buy it.

EDIT: It occurred to me that I read one of Simon's earlier works, I think it's part of the same series? Anyway, my recommendation is: https://www.amazon.com/Code-Book-Science-Secrecy-Cryptography/dp/0385495323

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/ponytron5000 · 3 pointsr/MLPLounge

Reverse Code Engineering. Down the rabbit hole you go!

I'm not sure how to tell you where to start with cryptography. For the kind of stuff they've been doing so far in the footers, it's enough to just understand binary numbering. The rest is mostly intuition.

The Caesar cipher is an example of a shift cipher, which in turn is a subset of the broader category of substitution ciphers. You should probably familiarize yourself with how to use frequency analysis to break classic substitution ciphers. The next major evolution of ciphers was the vigenere cipher. During WWI, Germany used the ADFGVX. Even now, breaking it is not trivial if the key is sufficiently long.

On the modern, digital side of things, encryption algorithms generally fall into two categories: block ciphers (ex. AES, DES, Blowfish, etc.) and stream ciphers. You should probably learn what hashing algorithms are (ex. MD5, SHA-1). If you want to crack hashes these days, you'll want to know about rainbow tables.

If you're looking for a good laymen's introduction, I recommend The Code Book by Simon Singh.

u/skald · 3 pointsr/printSF

Though strictly factual, Simon Singh's The Code Book can at best of times be read as a good spy novel, just based on real historical facts. A very interesting read nonetheless!

u/DwellerZer0 · 3 pointsr/ScenesFromAHat

"As our hotel accommodates guests of all faiths, we shall no longer carry books of faith with reassuring and positive messages that imply order, such as the bible and the q'ran. Instead, we have made available A Million Random Digits with 100,000 Normal Deviates to reassure our guests that the universe is indeed a cold and meaningless chaotic place with no deeper meaning."

u/screamcheese · 3 pointsr/fffffffuuuuuuuuuuuu

Amazon sells everything

u/trimeta · 3 pointsr/funny

That's nothing compared to this book. Just look at the reviews!

u/U-1f419 · 3 pointsr/NoStupidQuestions

You know this one started slow, but by about page 500 it genuinely does pick up quite a bit.

u/draypresct · 3 pointsr/statistics
u/yawpitch · 3 pointsr/Python

You can still buy random on Amazon.

Edit: in fact, you can also get it free from the horse's mouth.

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 :)

u/suicidalginger · 3 pointsr/HowToHack

I don't know how in depth you want to learn, how in depth determines our recommendations.

  1. Do you want to just find out if a site is vulnerable?
  2. Do you want to learn how attacks work and how the defenses to those attacks work?
  3. Do you want to get certified in security and make that a huge part of your resume?

    You sound like you want the second option.

    The key phrase for you is going to be "web application security". That is what security experts (and anyone in this industry) call it.

    For web application security there is kind of one master book that covers almost everything, The Web Application Hackers Handbook. I have the book siting right in front of me its about 900 pages and covers just about everything you could ever ask for. Also you'r going to want to get Burp Suite. You can install Kali linux in a VM and it has Burp Suite (recommended) or you can download the free edition for Windows from there website.

    Along with the book set up DVWA (there are hundreds of tutorials online on how to do that, hint use XAMPP.) or you can use the paid labs they mention in The Web Application Hackers Handbook. Also visit HackThisSite and other sites that offer web application security practice.

    So lets recap:

  4. Buy The Web Application Hackers Handbook.

  5. Setup DVWA.

    3.Visit sites that offer web application security challenges.



    By the end of that you should be pretty good at attacking web applications.
u/Kravego · 3 pointsr/AskNetsec

Get this book and go through it. A LOT of the crowsourced pentesting platforms have web application testing as their bread and butter.

And the other user who suggested it got downvoted for some reason, but further down the line you should go for GWAPT. I say further down the line because, like all SANS certs, it's expensive af.

Web app pentesting is the largest pentesting market around right now, so it's a good one to jump into. Good luck!

u/ArkionA · 3 pointsr/ITCareerQuestions

Absolutely love being a pentester and the cyber security industry. If you are willing to put in the time and study it can be very rewarding. CEH is a good step in the right direction and should open doors for you.
For entry level positions, pentesting is usually split into two areas, web application and internal/external infrastructure. It's good to have knowledge of both but it's worth choosing which area interests you the most. Personally, I specialise in web applications &amp; API and there is a lot of online resources to help you. (As you have mentioned owasp top 10, I'll assume web apps is your interest)


The best way to learn a vulnerability and get a good understanding is to create vulnerable web pages (this also gives you something to take into an interview). I would suggest doing some basic LAMP stack (Linux, Apache, Mysql, PHP) - Don't let this put you off as it's actually pretty simple. If you can make a few vulnerable pages to display vulnerabilities, you will fly through entry level interviews.


it's really simple to do.. Here is a form that is vulnerable to cross-site scripting. (a few lines of php with some html)
---

&lt;form method="POST" action=""&gt;

&lt;p&gt; &lt;input type="text" name="xss"/&gt;&lt;/p&gt;

&lt;input type="submit"&gt;

&lt;?php
$value = $_POST['xss'];
echo $value;
?&gt;

Reading Material:

https://www.amazon.co.uk/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470

https://www.amazon.co.uk/Network-Security-Assessment-Know-Your/dp/149191095X


Practical learning
DVWA (Damn Vulnerable Web App) - Purposely vulnerable web pages to practice exploiting.
http://www.dvwa.co.uk/


Once you have a bit of experience have a look at hackthebox

https://www.hackthebox.eu/

u/3nvisi0n · 3 pointsr/HowToHack

I'd recommend checking out The Web Application Hackers Handbook: http://www.amazon.com/The-Web-Application-Hackers-Handbook/dp/1118026470

Its a solid book that covers a lot of what you'd want to know. It does make heavy use of the free BURP suite tool which is a fairly standard tool for web pentesters. It doesn't do everything for you but it helps manual testing.

u/apt_snake_oil · 3 pointsr/singapore

I think very poorly of the cyber security courses offered (except NUS) in Singapore, as the things they teach are not aligned with the industry practices - either outdated or just not practical enough.

Having said that, if you have the time, I would suggest taking the SIT degree instead of the diplomas (waste of time IMO) and hopefully it provides you the fundamentals (programming, network and system administration) and be exposed to some other topics in cybersecurity.

If you are doing a career switch, I suppose you want to get up to speed fast by focusing on the need to have knowledge as a baseline. I would suggest taking the time to go through these stuff in details, setup your labs and practice the stuff

  1. https://www.cybrary.it/course/comptia-network-plus/
  2. https://www.amazon.com/Kali-Linux-Revealed-Penetration-Distribution/dp/0997615605
  3. https://www.amazon.com/Network-Security-Assessment-Know-Your/dp/149191095X
  4. https://www.amazon.com/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470

    Other wise, there are hands on courses and industry certifications that you can take online at your own pace and employers look out for such as:

  5. https://www.elearnsecurity.com/training_paths/ (eLearnSecurity is good because they have a progression path from student onwards )
  6. https://www.offensive-security.com/information-security-certifications/oscp-offensive-security-certified-professional/ (I don't encourage going for this as a starter unless you already have some fundamental knowledge and skillets for system administrations but this is highly recognised in the industry)
  7. You can also go for SANS or what not, I think it's just too expensive for my liking.

    There is no one path to becoming a good pentester. However from my observations, folks who tend to be more in demands (with or without certifications/formal educations) are those who can display the ability to learn stuff on their own. This is an industry of skills and continuous learning. For employers that pay top dollar and provide time for training, learning and research, they are looking for folks who can display those stuff through actions.

    &amp;#x200B;

    Source: Pentester
u/_Skeith · 3 pointsr/AskNetsec

Go here and learn about the vulnerabilities - www.hacksplaining

Review the OWASP Top 10

Buy, read, and understand The Web Application Hacker's Handbook - this is the holy bible in the Web Penetration Realm.

Set up a VM and download DVWA as well as Mutillidae to practice web hacking and exploitation on.

If you are really new to pentesting in general - go and read my blog https://jhalon.github.io/.

I suggest you read the Vulnhub Writeup's and well as the Holiday Hack Challenge and the OverTheWire Natas ones as they are related to web hacking and will show you stesp from enumeration to exploitation.

Also since you are going to be interning at a company that does this, please familiarize yourself with the The Penetration Testing Execution Standard

Hope that sheds some lights, cheers!

u/marxocaomunista · 3 pointsr/portugal

Faz VMs/CTFs em casa, lê o Web Application Hacker's Handbook. Depois candidata-te a trabalhos na área. That easy.

&amp;#x200B;

Não tenho mestrado nenhum na área de cybersec (tenho em telecom), e já vou no segundo ano na área sem nunca ter trabalhado antes.

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

I haven't used it yet, but if the reviews and his html/css book are any indication this would be an amazing book.

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/Yeomanninja · 3 pointsr/webdev

I picked up this book and have been going through it along with CodeAcademy and Treehouse. The book has lots of examples and simplifies a lot of things that aren't neccessary taught on the tutorial sites so I find learning through mutiple resources pretty good.

u/D_Rosenqvist · 3 pointsr/webdev

Jon Duckett: Javascript &amp; JQuery + The Odin Project

These two sources worked wonders for me.

u/threepipe · 3 pointsr/arduino

Lol I've never heard a script kiddie ask for factoring advice... guess there is a first time for everything. Maybe try reading this -- https://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672/ref=sr_1_1?ie=UTF8&amp;amp;qid=1468244890&amp;amp;sr=8-1&amp;amp;keywords=refactoring.

u/materialdesigner · 3 pointsr/programming

Refactoring

read it. seriously. it's a great book. and it's invaluable.

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/throughactions · 3 pointsr/Python

Personally, I look for code smells. You can find them formalized in Refactoring: Improving the Design of Existing Code.

u/pitiless · 3 pointsr/PHP

The following books would be good suggestions irrespective of the language you're developing in:

Patterns of Enterprise Application Architecture was certainly an eye-opener on first read-through, and remains a much-thumbed reference.

Domain-Driven Design is of a similar vein &amp; quality.

Refactoring - another fantastic Martin Fowler book.

u/dangkhoasdc · 3 pointsr/compsci

Concrete Mathematics - one of the best textbooks to study discrete math

u/exeter · 3 pointsr/compsci

While not free, Knuth, Graham, and Patashnik's Concrete Mathematics is quite cheap on Amazon.com, and, if you work through it diligently, you'll have more than enough mathematics to tackle CS through the beginning graduate level.

u/yellowstuff · 3 pointsr/programming

There's a whole section on this problem in Concrete Mathematics. The first edition was published in 1989, and the problem was old then.

u/shyspy · 3 pointsr/gatech

Accelerated C++

There ya go. Now you don't have to take an entire class to learn C++.

u/StackedCrooked · 3 pointsr/cpp

&gt; Other resources that move a little faster?

I learned C++ from the book Accelerated C++ and I recommend it to everyone that wants to learn C++ seriously. The learning curve is a little steep, but with some dedication you can work yourself through it in a month or three.

u/stardustnr4007 · 3 pointsr/learnprogramming
u/kalven · 3 pointsr/programming

Pick up a copy of Accelerated C++. It starts at the very beginning and takes a more modern approach to teaching C++ than a lot of the other books on the market.

It's part of the "C++ in-depth series" that also has a bunch of other great titles like Sutter's Exceptional C++.

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/Endyd · 3 pointsr/cpp_questions

I just went through Accelerated C++ by Koenig and Moo. It helped me learn most of the basic ideas from strings and pointers to polymorphism and template classes. Very well written, though I did need to google a few things and ask people I knew sometimes. I haven't done any online courses. I think I will work on personal projects using C++ from now on to learn, and google things to fill in the gaps.

u/elbeesee · 3 pointsr/learnprogramming

Accelerated C++ was made for that purpose. Most of the low reviews are beginners complaining that they couldn't follow, or complaining about the "paper quality" (mine is fine).

u/ewiethoff · 3 pointsr/learnprogramming

If you'd like to take another stab at C++, I recommend Accelerated C++.

u/Fabien4 · 3 pointsr/cpp

Grab a copy of Accelerated C++ and give it a few hours. You should know whether C++ is for you.

u/soundslikeponies · 3 pointsr/unrealengine

C++ is a complicated, technical language. I'd recommend hitting the books for it. Learning C++ properly will teach you a lot about almost any language.

Accelerated C++ is the place to start if you don't know how any of the syntax works (pointers, const, templates, etc). Read a bit of it and write some C++.

When you've written some files and feel comfortable in C++'s syntax, read Effective C++. It will teach you good practice with many points from it transferring over to other languages.

u/TheFryeGuy · 3 pointsr/learnprogramming

I've been using Accelerated C++ (you can find pdfs of it pretty easily if you don't want to buy it). It seems to be serving me well so far.

u/piojo · 3 pointsr/programming

C++ isn't that hard, unless you're trying to learn all of it. When I deal with unfamiliar (complex) APIs, part of the struggle is learning what I can ignore--what pointer parameters should usually be NULL, for example, or what typedef/macro is really just a char or int.

Another thing that used to confuse me is that some APIs want the address of a function as a parameter, while others want an object that performs a function (usually, it's because the object has operator()() defined). This is used when the API you're using assumes your function will want to remember state in a more sophisticated manner than is possible with a simple function (and the object is kept alive and its operator()() is called several times). If you really want to understand C++ (I'm not sure you do), I'd recommend Scott Meyers' Effective C++.

Sorry that I don't have any great advice, but these are a couple things that I struggled with when learning new APIs.

u/sh33ple · 3 pointsr/programming

Python seconded. Learning multiple languages, especially ones that differ significantly from the ones you already know, is one of the keys to being a good programmer. This is some of the advice in Peter Norvig's Teach Yourself Programming in Ten Years.

How to think like a computer scientist is an OK introduction to Python and programming, but it's very undeserving of that title as it really doesn't touch on what one might call computer science. In fact the more computer-sciencey parts are pretty poor – for example, the section on tail recursion is complete crap that will just confuse someone who doesn't already know the what and why of tail recursion.

If you're dead set on Windows and C++ you don't need VS Pro, MS have a free version. It's unlikely you'll really need the extra features that come with the pro version. Also once you're past learning the basics, read a copy of Effective C++ and Exceptional C++. And try not to get sucked too heavily into the weirdisms of the Windows style of C++ programming, they do funny things over there.

u/cmgg · 3 pointsr/funny

Reminds me of a joke:

a: "Alright the book is done, all that is left is to choose a cover".

b: "Dragons"

a: "B-but the book is about..."

b: "DRAGONS I SAID"

Book

u/HotRodLincoln · 3 pointsr/IWantToLearn

There are books specifically on language design, syntax trees, and unambiguous grammars.

The classic books on compiler design are "The Dragon Book", designing a compiler is important because a statement in the language should mean exactly one thing, and a language should be able to be compiled efficiently. This is more difficult than it sounds.

Second, you need to understand language design, variable binding, etc. This is a topic of Programming Language Paradigms. I'll figure out a good book for this and edit to add it. The best book probably covers languages like Ada, Haskell, C, and Java and gives an overview of their design and reasons.

edit: The book for design is Concepts of Programming Languages 9th ed, by Robert W. Sebesta.

u/bobappleyard · 3 pointsr/programming

I don't know what he'd recommend, but I found the Dragon Book and Modern Compiler Design to be decent treatments of the subject. There are lots of interesting texts out there though.

Sorry for the cheeky reply.

u/evaned · 3 pointsr/programming

&gt; And which coder uses physical books any more?

I do for things beyond actual language references; e.g. maybe everything in The Dragon Book has a good description somewhere, but grabbing that off my desk and having a decent chance of it having what I want (it has some problems and omissions, but it's reasonably good) will save wading through a bunch of crap online until I find something complete and accurate enough.

u/sfrank · 3 pointsr/programming

But make sure to get the 2nd edition of the Compiler book. It has been enhanced quite a bit.

u/OmegaNaughtEquals1 · 3 pointsr/cpp_questions

This is a great question! It's also one that every serious CS person will ask at some point. As others here have noted, to really understand this question you must understand how compilers work. However, it isn't necessary to understand the gory details of compiler internals to see what a compiler does for you. Let's say you have a file called hello.cpp that contains the quintessential C++ program

include &lt;iostream&gt;

int main() {<br />
    std::cout &amp;lt;&amp;lt; &quot;Hello, world!\n&quot;;<br />
}<br />


The first thing the compiler does is called preprocessing. Part of this process includes expanding the #include statements into their proper text. Assuming you are using gcc, you can have it show you the output of this step

gcc -E -o hello.pp hello.cpp

For me, the hello.cpp files explodes from 4 lines to nearly 18000! The important thing to note here is that the contents of the iostream library header occur before the int main lines in the output.

The next several step for the compiler are what you will learn about in compiler design courses. You can take a peek at gcc-specific representations using some flags as discussed on SO. However, I pray you give heed. For there be dragons!

Now let's take a look at the compiler's output. To do this, I am going to not #include anything so the output is very simple. Let's use a file called test.cpp for the rest of the tests.

int main() {
int i = 3, j = 5;
float f = 13.6 / i;
long k = i&lt;&lt;j;
}

To see the compiler's output, you can use

g++ -S -masm=intel test.cpp

The -S flag asks gcc to just output the generated assembly code and -masm=intel requests the intel dialect (by default, gcc uses the AT&amp;T dialect, but everyone knows the intel one is superior. :) ) The output on my machine (ignoring setup and teardown code) is outlined below.

push rbp
mov rbp, rsp

/ int i = 3, j = 5; /
mov DWORD PTR [rbp-20], 3
mov DWORD PTR [rbp-16], 5

/ float f = 13.6 / i; /
pxor xmm0, xmm0
cvtsi2sd xmm0, DWORD PTR [rbp-20]
movsd xmm1, QWORD PTR .LC0[rip]
divsd xmm1, xmm0
movapd xmm0, xmm1
cvtsd2ss xmm2, xmm0
movss DWORD PTR [rbp-12], xmm2

/ long k = i&lt;&lt;j; /
mov eax, DWORD PTR [rbp-16]
mov edx, DWORD PTR [rbp-20]
mov ecx, eax
sal edx, cl
mov eax, edx
cdqe
mov QWORD PTR [rbp-8], rax

/ implicit return 0; /
mov eax, 0
pop rbp
ret

There are lots of details to learn in here, but you can generally see how each simple C++ statement translates into many assembly instructions. For fun, try compiling that program with the optimizer turned on (with g++, you can use -O3). What is the output?

There is still much to see from the binary that is assembled. You can use nm and objdump to see symbols or ldd to see what other libraries were (dynamically) linked into the executable. I will leave that as an exercise for the reader. :)

u/lemontownship · 3 pointsr/cpp

&gt; I will say that C++ is a very difficult language to pick up.

C++ is massive, being a three-decade accretion of features. Stroustrup's indispensable book, over 1300 dense pages, is only a succession of introductions to various aspects of the language. You often go to the web to get details.

u/MetaKazel · 3 pointsr/learnprogramming

Sorry to hear that, friend.

I would definitely try to get your hands on a copy of The C++ Programming Language, it's got enough content to last you a while and it'll definitely show you all the ins-and-outs of C++.

u/cauchy37 · 3 pointsr/oddlysatisfying

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

u/ProvenDantheman · 3 pointsr/Cplusplus

Posting this as a top level comment so people can see this without digging. Here are some of the resources I have used plus additional ones I've found that may be useful:

  • cplusplus.com - Goes over the basics, I've personally used this a lot.
  • learncpp.com - Goes more in depth with standard library functionality.
  • udemy - Here's a free C++ udemy course. Udemy is a great resource for learning languages and game engines.
  • Effective Modern C++ - Book - A great book that acts more of a reference to C++ functionality. It also goes over best practices.
  • The C++ Programming Language, 4th Edition - Book - A reference on the C++ programming language.
u/Peterotica · 3 pointsr/oculus

I'm in a similar position. I haven't used C++ since I was in school, and at the time I was just learning, so I never obtained a real deep knowledge of the language. Not to mention that there are whole new ways of solving some problems with the additions from C++11. What I'm doing right now is reading through The C++ Programming Language. I am hoping it will do the job of reintroducing me to the entire language while explaining all of the new stuff.

It seems to be going well thus far, but I have only just gotten started.

u/mitchell271 · 3 pointsr/learnprogramming

The C++ Programming Language is one of my most prized books. It assumes you know some C/C++, so it's not the best starting point, but it has the depth and wisdom that only the creator of a language has. Which is why he wrote this book.

u/PursuitOfAutonomy · 3 pointsr/learnprogramming

&gt; It seems like the real core of programming is to know how to ask the right questions to find the answers and apply them.

You are correct. The C++ Programming Language book is 1368 pages. Look how big the Java 8 API is. The Python Standard Library has 35 topics, breaking down to about 10 subtopics each, that can then have pages and pages of information each.


You are always going to need a reference to do something there is simply too much to memorize. Even if you know exactly what you want to do chances are you are going to have to look something up.

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/cannibalbob · 3 pointsr/cscareerquestions

The feedback about "jargon for development" can be solved by going through some books cover to cover, making sure you understand the theory, and implementing the exercises. I understand that feedback to mean that the person who gave the feedback believes there is too high a chance you will inflict damage on the codebase by making decisions not grounded in solid theory.

Examples of titles that are classics and widely known:
Algorithms (4th Edition): https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X (there is an accompanying coursera course).

Code Complete: https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469249272&amp;amp;sr=1-1&amp;amp;keywords=code+complete

Clean Code: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469249283&amp;amp;sr=1-1&amp;amp;keywords=clean+code

Functional Programming in Scala: https://www.amazon.com/Functional-Programming-Scala-Paul-Chiusano/dp/1617290653/ref=sr_1_2?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469249345&amp;amp;sr=1-2&amp;amp;keywords=scala

Learning Python: https://www.amazon.com/Learning-Python-5th-Mark-Lutz/dp/1449355730/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469249357&amp;amp;sr=1-1&amp;amp;keywords=learning+python

Effective Java: https://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683/ref=sr_1_5?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469249369&amp;amp;sr=1-5&amp;amp;keywords=java

Haskell Programming From First Principles: http://haskellbook.com/

I included multiple languages as well as language-agnostic ones. Functional programming is the near-to-medium term future of software engineering, and most languages converging towards that as they add functional features.

I don't think bootcamp is required. Learning how to learn is the most important thing. If you get into these books, lose track of time, and feel "aha! that's how these things that I previously thought were unrelated are actually the same thing!", and are able to keep it up for weeks, then that is a good sign that you can get to where you want to be.

u/fromwithin · 3 pointsr/learnprogramming

This one is very good indeed.

u/CS4Fun · 3 pointsr/OSUOnlineCS
u/darchangel · 3 pointsr/programming

You know how you wish you could relive the experience of your first time watching your favorite movie or listening to a mind-blowing song -- that's how I feel about reading Code and The Elements Computing Systems. I'm a self-taught programmer with impostor syndrome who's spent a career playing catch-up to formerly trained comp sci-ers. When I first read these books, they utterly blew my mind.

u/Vekrander · 3 pointsr/IWantToLearn

I was discussing with a friend about computers as I'm a Computer Engineer and learned all about the design and ground up construction from the principals of electronics up through logic gates operating systems and programming as a part of my college curriculum. He said he read through this book and it was very insigtful and was able to have a good proper discussion about it. I'm not sure if linking is allowed but here it is on Amazon.

http://www.amazon.com/The-Elements-Computing-Systems-Principles/dp/0262640686

It's The Elements of Computing System Principles by Noam Nisan.

From there if you're further interested you'll know which topics might be more interesting to you and you'll be able to better investigate it. It's really a lot of material, and after 4 years of school, I know quite a bit about it, but people tend to specialize due to the sheer amount of material there is to learn about each specific topic. Lifetimes have been devoted to singular aspects of computer design so don't feel bad if some of it is overwhelming.

u/taetimeh · 3 pointsr/csbooks

I have yet to read it myself, but i hear good things about The Elements of Computing Systems: Building a Modern Computer from First Principles.
This video is related. If you have an hour to spare I'd really recommend it.

Edit:
As a point of interest the minecraft computer is based on the "Hack machine" described in the book.

u/bengy5959 · 3 pointsr/learnprogramming

Elements of Computing Systems is a really good book to learn from the ground up.

u/metrogdor22 · 3 pointsr/redstone
u/theholyraptor · 3 pointsr/AskEngineers

Further reading/research: (Not all of which I've gotten to read yet. Some of which may be quite tangentially relevant to the discussion at hand along with the books and sites I mentioned above. Consider this more a list of books pertaining to the history of technology, machining, metrology, some general science and good engineering texts.)

Dan Gelbart's Youtube Channel

Engineerguy's Youtube Channel

Nick Mueller's Youtube Channel

mrpete222/tubalcain's youtube channel

Tom Lipton (oxtools) Youtube Channel

Suburban Tool's Youtube Channel

NYCNC's Youtube Channel

Computer History Museum's Youtube Channel

History of Machine Tools, 1700-1910 by Steeds

Studies in the History of Machine Tools by Woodbury

A History of Machine Tools by Bradley

Tools for the Job: A History of Machine Tools to 1950 by The Science Museum

A History of Engineering Metrology by Hume

Tools and Machines by Barnard

The Testing of Machine Tools by Burley

Modern machine shop tools, their construction, operation and manipulation, including both hand and machine tools: a book of practical instruction by Humphrey &amp; Dervoort

Machine-Shop Tools and Methods by Leonard

A Measure of All Things: The Story of Man and Measurement by Whitelaw

Handbook of Optical Metrology: Principles and Applications by Yoshizawa

Angle of Attack: Harrison Storms and the Race to the Moon by Gray

Machine Shop Training Course Vol 1 &amp; 2 by Jones

A Century of Electrical Engineering and Computer Science at MIT, 1882-1982

Numerical Control: Making a New Technology by Reintjes

History of Strength of Materials by Timoshenko

Rust: The Longest War by Waldman

The Companion Reference Book on Dial and Test Indicators: Based on our popular website www.longislandindicator.com by Meyer

Optical Shop Testing by Malacara

Lost Moon: The Preilous Voyage of Apollo 13 by Lovell and Kruger

Kelly: More Than My Share of It All by Johnson &amp; Smith

Skunk Works: A Personal Memoir of My Years at Lockheed by Rich &amp; Janos

Unwritten Laws of Engineering by King

Advanced Machine Work by Smith

Accurate Tool Work by Goodrich

Optical Tooling, for Precise Manufacture and Alignment by Kissam

The Martian: A Novel by Weir

Roark's Formulas for Stress and Strain by Young Budynas &amp; Sadegh

Materials Selection in Mechanical Design by Ashby

Slide Rule: The Autobiography of an Engineer by Shute

Cosmos by Sagan

Nuts, Bolts, Fasteners and Plumbing Handbook by Smith Carol Smith wrote a number of other great books such as Engineer to Win.

Tool &amp; Cutter Sharpening by Hall

Handbook of Machine Tool Analysis by Marinescu, Ispas &amp; Boboc

The Intel Trinity by Malone

Manufacturing Processes for Design Professionals by Thompson

A Handbook on Tool Room Grinding

Tolerance Design: A Handbook for Developing Optimal Specifications by Creveling

Inspection and Gaging by Kennedy

Precision Engineering by Evans

Procedures in Experimental Physics by Strong

Dick's Encyclopedia of Practical Receipts and Processes or How They Did it in the 1870's by Dick

Flextures: Elements of Elastic Mechanisms by Smith

Precision Engineering by Venkatesh &amp; Izman

Metal Cutting Theory and Practice by Stephenson &amp; Agapiou

American Lathe Builders, 1810-1910 by Cope As mentioned in the above post, Kennth Cope did a series of books on early machine tool builders. This is one of them.

Shop Theory by Henry Ford Trade Shop

Learning the lost Art of Hand Scraping: From Eight Classic Machine Shop Textbooks A small collection of articles combined in one small book. Lindsay Publications was a smallish company that would collect, reprint or combine public domain source material related to machining and sell them at reasonable prices. They retired a few years ago and sold what rights and materials they had to another company.

How Round Is Your Circle?: Where Engineering and Mathematics Meet by Bryant &amp; Sangwin

Machining &amp; CNC Technology by Fitzpatrick

CNC Programming Handbook by Smid

Machine Shop Practice Vol 1 &amp; 2 by Moltrecht

The Elements of Computing Systems: Building a Modern Computer from First Principles A fantastic book with tons of free online material, labs, and courses built around it. This book could take a 6th grader interested in learning, and teach them the fundamentals from scratch to design a basic computer processor and programming a simple OS etc.

Bosch Automotive Handbook by Bosch

Trajectory Planning for Automatic Machines and Robots by Biagiotti &amp; Melchiorri

The Finite Element Method: Its Basis and Fundamentals by Zhu, Zienkiewicz and Taylor

Practical Treatise on Milling and Milling Machines by Brown &amp; Sharpe

Grinding Technology by Krar &amp; Oswold

Principles of Precision Engineering by Nakazawa &amp; Takeguchi

Foundations of Ultra-Precision Mechanism Design by Smith

I.C.S. Reference Library, Volume 50: Working Chilled Iron, Planer Work, Shaper and Slotter Work, Drilling and Boring, Milling-Machine Work, Gear Calculations, Gear Cutting

I. C. S. Reference Library, Volume 51: Grinding, Bench, Vise, and Floor Work, Erecting, Shop Hints, Toolmaking, Gauges and Gauge Making, Dies and Die Making, Jigs and Jig Making
and many more ICS books on various engineering, technical and non-technical topics.

American Machinists' Handbook and Dictionary of Shop Terms: A Reference Book of Machine-Shop and Drawing-Room Data, Methods and Definitions, Seventh Edition by Colvin &amp; Stanley

Modern Metal Cutting: A Practical Handbook by Sandvik

Mechanical Behavior of Materials by Dowling

Engineering Design by Dieter and Schmidt

[Creative Design of Products and Systems by Saeed]()

English and American Tool Builders by Roe

Machine Design by Norton

Control Systems by Nise

That doesn't include some random books I've found when traveling and visiting used book stores. :)

u/mkdz · 3 pointsr/askscience

This is an incredibly broad and complex set of questions.

Here is a good video describing why there are so many programming languages.

Wikipedia has multiple pages comparing programming languages. Here is the beginning.

Students will spend years in school learning about the different layers of abstraction in programming and how code gets turned into something the computer will understand. This website along with the companion book is an excellent overview of the subject.

If you have more specific questions after perusing through the resources, I can answer them. The links the other poster and I have posted will give you a high-level overview of what you asked, but if you want all the details, you'd be halfway to a computer science bachelors degree.

u/Yuushi · 3 pointsr/learnprogramming

Don't start with the dragon book as someone else suggested - it's too much for someone new. I'd suggest reading The Elements of Computing Systems (which you can also read online). It starts from the grond up, but in the end has you creating a "high level" compiled language.

u/splatterdash · 3 pointsr/programming

The speaker wrote this as a book, which was actually published in 2005.

Bought my own copy some time ago, definitely recommended!

u/molotovbliss · 3 pointsr/Magento

Obviously the biggest gripe with Magento is obviously, Speed.

That said I recall Alan Storm mentioning performance was not a target during initial development, flexibility and developer friendliness would be a key to market penetration as it is obviously what helped make it as popular as it is.

Fast forward and now we all are having to deal with this initial uncaring for performance. We install layers upon layers of caching and indexing to squeeze as much out of it as we can.

Personally I find Magento overly architected. It feels like Spaghetti code at times, except its just a big massive plate of lasagna now. Everything has to go through hundreds of layers to build out a simple request.

With that said.

Wrong:

  • Documentation sucks = Learn to read code
  • ORM = Learn SQL! (a DBA will thank you later)
  • EAV = Flatten the tables to many smaller tables
  • XML = Use associative Arrays (its native and loads quickly, and will throw errors upon un-initialization)
  • Email templates = Surely there is a better way?!
  • API = Nothing but wrappers around Models (which is why its still so damn slow)
  • Autoloading = Who ever thought scanning a hard disk for X number of dirs for one file must seek therapy. (yes I know theres class maps now and opcode cache like APC) Fun fact lib/ is scanned as well. so thats 4 code pools in total.
  • Upgrading large data will just not happen due to upgrade scripts with numerous ALTER TABLE commands instead of grouped causing large MySQL table disk copies and scan.
  • Data flow (even with the latest version still just plain sucks, thankfully theres Magmi and uRapidFlow)
  • Cron (do we really need another Cron inside of Magento itself?)
  • A better Magento connect similar to how Wordpress works would be nice.
  • Ebay/Paypal ;)

    Right:

  • Observers (as much as I hate using design pattern buzzwords!)
  • PHP as phtml (no template language overhead. learn PHP frontend devs!)
  • Factories (see observers comment)
  • Singletons (see observers comment)
  • Adminhtml_Grid
  • Multi-Site/Store
  • Layouts per product/site/store
  • Theme and code pool fall backs
  • Shopping Cart Rules

    What I'm NOT looking forward to in Magento2:

  • EAV is sticking around (but maybe can be disabled?)
  • TDD/Unit Tests (Yes, I don't see the point in TDD, and hard to convince otherwise)
  • Twig
  • WYSIWYG editors
  • More layers on the already tall lasagna stack.

    After using Magento since version .6b using (X-Cart years before) I've slowly come to the realization that the majority of implementations seem to come from the Java world.

    http://i.qkme.me/3u7vuq.jpg

    I don't know if its the fact that instead of teaching Basica or even C isn't part of the curriculum at universities anymore and they just drop you into Java but I wish people would take more time to figure out the basic principles FIRST before saying Java, PHP, C, etc is better. They all have their +/-'s. But understanding the principles layers generally helps you understand how your PHP code is working inside the machine. I don't think this is taught anymore or no one cares. I'd suggest http://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/0262640686 to pickup for a good read for those that don't.

    With that said anyone who thinks they can rebuild a better Magento from scratch, I will salute you, me I realize such a task would require years to achieve, by then the train may of already left the station. I know Varien who was a consulting company before Magento, realized the many pitfalls of OSCommerce for their clients. Hence why we have Magento today.

    Disclaimer: These are just my opinions, which are a lot like butts we all have one and they all stink. ;)
u/OdwordCollon · 3 pointsr/gamedev

This Book. Read it. It's fantastic

u/SeriousAboutLinux · 3 pointsr/gamedev

Also Effective C++, because it's full of gotchas and important but subtle language features that are ideal for interview questions. A lot of it will be too advanced for a jr. level interview, but you should read it anyway because it's a great book.

u/sebnukem · 3 pointsr/cpp
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/stephanimal · 3 pointsr/gamedev

if you have yet to, read THIS book!

Many C++ interview questions are lifted right out of here, and for good reason. It contains so many pitfalls and good habits.

u/RavenousBug · 3 pointsr/learnprogramming

These are books I read many years ago, they can be helpful but may be dated and will not include newer features. But as an introduction they worked well.

Thinking in C++ Voume 1 and 2 by Bruce Eckel

https://www.amazon.com/Thinking-Vol-Introduction-Standard-2nd/dp/0139798099/ref=dp_ob_title_bk

https://www.amazon.com/Thinking-C-2-Practical-Programming/dp/0130353132/ref=pd_sbs_14_1

And Scott Meyers

Effective C++ - https://www.amazon.com/Effective-Specific-Improve-Programs-Designs/dp/0321334876/ref=pd_sbs_14_2

Effective STL - https://www.amazon.com/Effective-STL-Specific-Standard-Template/dp/0201749629

u/Brandonthegeek · 3 pointsr/learnjava

You could go down two routes IMO: learn some algorithms and data structures, or start working with a more complex domain.

For the algorithms and data structures, this would be mostly stuff you'd learn in a second semester CS program course. In fact, you can work through some of these classes that are open, like the one at Berkeley. Another option is to pick up a good book; I personally love the Algorithm Design Manual. This will give you a really firm foundation on computation (not just programming in Java). It's also great practice for jobs since most interview questions revolve around these concepts.

For a new domain, I'd recommend Android development, since it's all done in Java. There's tons of documentation and resources for that, and loads to learn outside of just programming in Java. Not to mention you can carry around your work in your pocket and show off to potential employers. Aside from that, you can volunteer for an open source project. Apache has tons of projects in lots of languages.

u/j_86 · 3 pointsr/sysadmin

Learn Windows PowerShell in a Month of Lunches is a pretty popular one and has helped me
https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617294160/ref=dp_ob_title_bk

u/chunky_bacon · 3 pointsr/programming

I thought so too, until I discovered The Algorithm Design Manual.

So, what about CLR(S) warrants a new edition?

u/comsci-bro · 3 pointsr/Philippines

Any great places/sites to buy computer science books? I'm looking for the books Introduction to Algorithms and/or The Algorithm Design Manual as supplementary reading for my algo class.

u/jama211 · 3 pointsr/AdviceAnimals

The algorithm design manual is an incredible resource, check it out!

u/schala09 · 3 pointsr/Seattle

Here's a great article about interviewing at software companies:

http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html

I particularly recommend working through the book he recommends:

http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693

Not only is it a great book for the kind of thinking that you're expected to do in these interviews, but it also has a number of sample interview problems. You may even recognize some of them from your past interviews.

I can't recommend this book highly enough.

u/StarkCommando · 3 pointsr/ITCareerQuestions

Pluralsight has some good videos for the MCSA Server 2012. If you sign up for Visual Studio Dev Essensials, you can get a free 3 months with Pluralsight.

https://www.visualstudio.com/free-developer-offers/

I should add, if you're going for the MCSA cert, I've heard it's Powershell heavy. You can get started with Powershell with Learn Windows PowerShell in a Month of Lunches

u/gnuvince · 3 pointsr/programming

I like Skienna; short intro to the theory at the beginning and then it delves into actual algorithms. CLRS is good if you need more theory (e.g. solving recurrences).

u/xsdc · 3 pointsr/sysadmin

It's cliche, but Month of Lunches is great if you're looking for a book. Honestly my advice is to solve problems with powershell. Learn to lean heavily on "Get-Command" and "Get-Help". When someone comes to you with something you would normally use the gui for, just figure out how to powershell it (advice - avoid device drivers)


A key piece of Systems Administration is driving yourself. In many situations you are the bottleneck to other people accomplishing their project or to fixing an issue - this means you need to understand that everyone is going to tell you their thing is high priority because they can't do anything til you're done. As you grow, you'll figure out how to get out of that position (automating pieces is a major part of that) but right now, focus on communicating clearly and honestly. Learn to set expectations - that's more important then any technical skill you can focus on.

u/dotbat · 3 pointsr/sysadmin

I've heard good things about "Powershell in a month of lunches"

http://amzn.com/1617294160

u/thatpaulbloke · 3 pointsr/sysadmin

There are two main resources that you will need in order to learn PowerShell; the first is PowerShell in a Month of Lunches (there's a newer version coming soon) and the second is access to people who know PowerShell and can help you, like /r/powershell for example.

u/Jollyhrothgar · 3 pointsr/learnpython

Just looking for learning, etc? If it's for interview prep, I'd give different recs.

I highly recommend:

u/swankybear · 2 pointsr/SoftwareEngineering

Boot camps might help teach certain technologies, but they might not help with the fundamentals. Additionally before you give money away try to complete courses on Udemy or Coursera to see if you can commit to the effort.

Over simplified recipe for building skills to transition:

  • code on the side; build skills to learn and dig deep. You'll always be solving things you may not know. The skill of learning is huge. Always be curious.

  • Master an OOP language, a scripting language, and maybe get familiar with CSS/HTML/JavaScript Node if you want to be a modern web Dev.

  • read this: https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612

  • read this (recommend to study for Google interviews): https://www.amazon.com/gp/aw/d/1848000693/ref=zg_bs_3870_4?ie=UTF8&amp;amp;psc=1&amp;amp;refRID=70YNX3TJA8F9GXG03Q9F

  • learn about web services . Try to build one from scratch with a REST API and a connection to a database. A lot of good fundamentals here and a lot of companies have devs that do this daily.

  • code some stuff on GitHub; maybe find an open source project to contribute to. Get involved with a Dev community and you'll learn 10x more than paying for a boot camp.

  • If web Dev turns out to not be your thing. Dive into other "programming" domains such as machine learning, big data, embedded systems, etc.


    If any buzzwords here might not make sense, congrats you get your first exercise in digging for answers ;) (no rudeness intended)
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/0x6f_ · 2 pointsr/algorithms

You usually do see stuff you've never seen before when you're learning something new.

Checkout:

u/KLM_SpitFire · 2 pointsr/computerscience

I purchased the following two books:

u/Feydarkin · 2 pointsr/algorithms

I second The Algorithm Design Manual, very good book.

I think that being proficient with algorithms consists of three skills:

  • Understanding specific algorithms and how they work (theory)

  • Being able to utilize/tweak a specific algorithm to solve a problem

  • Being able to decompose problems and choose relevant algorithms

    And I think that The Algorithm Design Manual is excellent for this, Carmen is more comprehensive but I find it a bit to dry for my taste.
u/nopointers · 2 pointsr/programming

Check this thread for a reading list. IMO, The Algorithm Design Manual should have made the top too.

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

what are "game algorithms" and why are they specific to games? What any game programmer needs is a grounding or at least an awareness of algorithms in general, as a means to solve problems.

When it comes to books, I'd recommend The Algorithm Design Manual by Steven Skiena it covers sorting and searching, graphs and graph problems, combinatorial problems, computational geometry, set and string problems, all with well written explanations.

u/zelmarvalarion · 2 pointsr/cscareerquestions

Well, first off, focus on describing the problem out loud, and start with what you are planning to do and why, along with what similar other problems you've seen. I would recommend speaking out loud and writing notes even when you are alone, then putting it down in high level pseudocode, then doing the actual coding.

Another thing I would suggest is starting with the "happy case" (e.g. for something that involves recursion into two subproblems, assume that it is a power of two and the only odd that you will have to deal with is the case with 1 element) leaving out the boundary conditions until the end and mention that, always state your assumptions and then you can go back and fill in the edge cases once you have something that works for the simplest case). If you get stuck or realize why your solution won't work, explain out loud why (or more likely, what your runtime is, and what you would have expected your runtime to be and why, e.g. you are doing another extra loop, but maybe you could do something with memoization or dynamic programming to cut that down due to repeating subproblems). In the actual interview, the interviewer is there to slightly guide you too, so you have some extra resources that you wouldn't on leetcode.

I would personally recommend grabbing a copy of Skiena's The Algorithm Design Manual (https://www.amazon.com/dp/1848000693/) and/or Cracking the Coding Interview (https://www.amazon.com/dp/0984782850/), as they walk you through how to approach the problem, not just show you the answer.

u/ItsNotMineISwear · 2 pointsr/programming

Every algorithms textbook I've read starts with a chapter that involves breaking down algorithm runtime into mathematical terms more specific than Big O (for instance, nested for loops turn into nested sums). Then the mathematical terms are simplified as much as possible and you get something like Runtime(n) = n(n-1)/2. Then you apply the definition of Big O to prove that that's O( n^2 ). The concepts and definitions of Big Omega and Big Theta are also usually brought into the mix as well.

If you want a specific book recommendation, I thought Skiena's Algorithm Design Manual was a good read.

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/cypherpunks · 2 pointsr/compsci

As others have mentioned, if you can afford it, TAoCP is definitely a keeper. How much Knuth will ever finish is unclear (he's something of a perfectionist), but it's a classic for a very good reason.

Slightly lower end, two great books are Hacker's Delight and Steven Skiena's Algorithm Design Manual. The latter is an algorithms book beyond the standard CS textbook, covering more exotic things like approximations to NP-hard problems. It's similar (but not identical, so it won't be boring) subject material to that class you link to.

u/ObnoxiousJoe · 2 pointsr/PowerShell
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/DrakharD · 2 pointsr/PowerShell

Would I create new lines below that one for the other OUs?

No, absolutely not. :)

The line I wrote is all you need.I'll try to explain it line by line.

&amp;#x200B;

$data = Import-Csv -Delimiter "," -Path C:\temp\data.csv

This line will import csv data from path C:\temp\data.csv into variable $data and it will use , as delimiter.Run it on your data and then run just $data to check what is inside your new variable.

$OU = ($data | select OU -Unique).OU

This line will select only OU column from your csv data in variable $data and it will select only unique values, so if you have users that are in same OU it will not duplicate it.After you run it check what's inside your variable by call it $OU.

&amp;#x200B;

Now we come to foreach loop.

foreach ($item in $OU) { New-ADOrganizationalUnit -Name $item -Path "dc=contoso, dc=com" }

It does exactly what it say, for each item, value inside variable OU it will run following code

New-ADOrganizationalUnit -Name $item -Path "dc=contoso, dc=com"

So let pretend you have this inside your variable OU.$OU

Finance
Accounting
Sales
IT
Quality

&amp;#x200B;

If we were to ran this code:

foreach ($item in $OU) { Write-Host "test" }

This would be the result in my terminal
test
test
test
test
test

Since we have 5 items inside $OU and command Write-Host "test" will be ran 5 times.

Now if I were to ran this code:

&amp;#x200B;

foreach ($item in $OU) { Write-Host "$item" }

This would be the result in my terminal

Finance
Accounting
Sales
IT
Quality

&amp;#x200B;

It will take each item from OU and output it to terminal.

&amp;#x200B;

I hope that makes it clear for you why all you need is this one line.

New-ADOrganizationalUnit -Name $item -Path "dc=contoso, dc=com"

&amp;#x200B;

If you really want to learn powershell and not just finish you project I strongly suggest this book:

Learn Windows PowerShell in a Month of Lunches

https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617294160

&amp;#x200B;

It's great book, really accessible and written in such approachable way that I guarantee if you finish it, you will understand and know powershell basics. :)

If you are more video guy this is old but great video series that will explain powershell basics.Big plus it's Jeffrey Snover talking about powershell. Can't beat that with a baseball bat :)

https://www.youtube.com/playlist?list=PLyJiOytEPs4etH7Ujq7PU7jlOlHL-9RmV

u/Vhyrrimyr · 2 pointsr/sysadmin
u/CaffinatedSquirrel · 2 pointsr/sysadmin

Powershell is a favorite at my place of work and allows us to automate some pretty fun stuff.. if you get started scripting or have any questions feel free to P.M. me anytime.. as for resources for powershell:

https://leanpub.com/powershell-scripting-toolmaking - PDF

https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617294160 - Book

https://www.youtube.com/watch?v=6CRTahGYnws&amp;amp;list=PL6D474E721138865A - Video

Hope this helps.. :)


u/matrixcr · 2 pointsr/Romania

Mersi de raspuns.
Eu ma gandeam ca Unibuc e mai potrivit pt ca la Poli voi face multa electronica si programare low-level si nu cred ca le voi folosi.(btw ce crezi de masterul asta de la unibuc http://fmi.unibuc.ro/ro/pdf/2008/curs_master/informatica/4InteligentaArtificialaEnachescuSite.pdf , e din 2008,nu am gasit o varianta mai buna.Daca voi avea posibilitatea sa fiu acceptat l;a o facultate mai moderna care face cercetare din afara o voi face,dar mai intai trebuie sa capat o diploma din Romania).

Planul meu a fost intotdeauna sa invat singur dar vreau sa fac cercetare/sa fiu angajat asa ca voi face o facultate.

Acum sunt a 10 la intensiv info.Am decis de anul asta ca vreau sa lucrez intr-un fcomp sci field si m-am apucat sa invat dinainte la info,in mare parte C++ si algoritmi ca DivideetImpera.Simt ca programa merge prea incet.Nu stiu nimic despre machine learning(inafara de chestii simple ca si la ce se foloseste) dar mi se pare un field foarte interesant unde contribuirile mele ar putea fi importante.

Va veni vacanta de vara si voi avea mult timp liber si vreau sa ma apuc de machine learning de-acum.Ce crezi de planul asta de invatare?

1-algebra liniara(de la MIT OCW https://www.youtube.com/watch?v=ZK3O402wf1c )

2-Invat despre algoritmi(MIT discrete math si MIT Algorithms sau Algorithms design manual )

3-Invat Python

4-Statitica( de pe KhanAcademy si dupa de pe MIT OCW)

5-Ma apuc de calculus(in a 11-a vom face diferentiale si a 12-a integrale dar ma voi apuca oricum dinainte ca trebuie sa le stiu oricum).Aici nu prea stiu ce va trebui sa invat mai exact.Stiu ca imi trebuie multivariable calculus dar trebuie sa invat integrale si diferentiale inainte?

6-Ma apuc de machine learning-Artificial intelligence:a modern approach si de cursul lui Andrew Ng de la Stanford.

Ce crezi de planul asta?

u/balloonanimalfarm · 2 pointsr/AskProgramming

I don't think either of these will help you become good at problem solving except on a very high conceptual level. Traditional games like those you mention are the inverse of programming. In traditional games you have a fixed measure of success, fixed legal moves, and a finite number of states. In programming you have a nebulous measure of success, an infinite number of things you can solve and an infinite number of states.

If you want to study games, look at them from a high level. What makes them the same? What makes them different? Are there strategies that transcend single games and apply to many?

You can also look for problems that are more open or look deeper into everyday things. Math proofs are a good example, think back to geometry and try to construct simple but sound proofs on your own. Try some problems on Project Euler. Read The Code Book and try to break some ciphers. Look at the objects you come across every day, ask yourself "why does this work the way it does?" and think through all the ramifications (here's one: why do stairwells have a swinging door on the first floor?) Look at the processes you have day to day, how could they be improved? How would you improve them?

u/firstmanonmars · 2 pointsr/IWantToLearn

I really recommend The Code Book by Simon Singh. Not only is it an amazing history of ciphers and codebreaking, but he gives a LOT of examples and practice material. There's some more challenges on his web site as well.

u/sablefoxx · 2 pointsr/crypto

Depending on age, The Code Book is a very approachable history and introduction to cryptography.

u/nessi · 2 pointsr/geek

The Code Book. Very entertaining, too.

u/lukjad007 · 2 pointsr/MyLittleFriends

You might want to check out this guy and his book aptly named the Code Book. I can't speak for it's authenticity and how accurate all the information is, being just an amateur, but it is quite interesting and gave me a nice overview of different secret message writing techniques. Worth a read.

u/gatewaynode · 2 pointsr/encryption

If you like books and are interested in modern cryptography, "Serious Cryptography" was excellent. A more introductory text with historical context is "The Code Book".

u/wolf395 · 2 pointsr/booksuggestions

I enjoyed Big Bang very much. I have also been recommended here another book by the same author: The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography

u/sarahjamielewis · 2 pointsr/privacy

Some search terms for how the internet works: Packet switched networking, TCP, IP, SSL.

I don't think I have ever read a book about basic internet workings, the internet is really the best place to read about that stuff (hence the search terms).

Instead I will list some books which look at how we define security and why secure systems fail:

Secrets and Lies is a good primer discussing trust / networks / cryptography and a few other things at a high enough level to be interesting to a lay reader: http://www.amazon.com/Secrets-Lies-Digital-Security-Networked/dp/0471453803/ref=sr_1_4?ie=UTF8&amp;amp;qid=1419753343&amp;amp;sr=8-4

Art of Intrusion is packed full of stories about how systems (computers or otherwise) fail and become insecure: http://www.amazon.com/Art-Intrusion-Exploits-Intruders-Deceivers/dp/0471782661/ref=sr_1_1?ie=UTF8&amp;amp;qid=1419753466&amp;amp;sr=8-1 the sister book Art of Deception (stories about Social Engineering) is also pretty good.

The Code Book, mostly history, but provides a great introduction to cryptographic concepts. http://www.amazon.com/The-Code-Book-Science-Cryptography/dp/0385495323/ref=pd_rhf_se_s_cp_7_RTJS?ie=UTF8&amp;amp;refRID=1RRWWY0RNX7G8HRYPFFS

u/hikariing · 2 pointsr/suggestmeabook

Hi I'm not sure if these are the books you would enjoy, but I do have a couple of them in my pocket list:


Personally in recent years I'm interested in topics about algorithms/cryptology and economics, so The Code Book by Simon Singh, Fortune's Formula: The Untold Story of the Scientific Betting System That Beat the Casinos and Wall Street by William Poundstone, The Physics of Wall Street: A Brief History of Predicting the Unpredictable by James Owen Weatherall, these are the ones of my all time favorite "history" books about math and science and their applications. : )


I can still come up with another (popular) book, Freakonomics: A Rogue Economist Explores the Hidden Side of Everything, but I didn't really enjoy the book, guess I didn't agree some of the conclusions in that book. But maybe you would find it interesting. :)


Hope this helps! ☺️

u/s1lv3rbug · 2 pointsr/learnprogramming

There are two basic types:

  • Symmetric (secret key algorithm, like AES)
  • Asymmetric (where you have public and private keys. RSA, DH etc)

    If you want to enjoy reading about encryption. checkout the book by Simon Singh: The Code Book
u/cutwordlines · 2 pointsr/australia

The Code Book was really good as well!

u/MimsyShackleford · 2 pointsr/dataisbeautiful

As soon as I looked at the image, the first thing that popped into my head was:

"Really useful chart to use against simple ciphers"

Have you read "The Code Book" [1]? Fantastic read :)

[1] https://www.amazon.com/Code-Book-Science-Secrecy-Cryptography/dp/0385495323/

u/ObscureChicken · 2 pointsr/encryption

The Code Book is exactly what you are looking for. Very fun read, very informative.

u/He_Who_Dealt_It · 2 pointsr/learnprogramming

Somebody told me, so I'm telling you: The Code Book is where it's at. Very easy to read and understand and will answer your questions.

u/waitfornightfall · 2 pointsr/books

Off the top of my head:

The Psychopath Test is a wittily written personal study of detecting, treating and (possibly) rehabilitating psychopaths.

The Freakonomics books are written by both an economist and a journalist (so easy to read) and contain slightly left-of-centre economic theories with easy to follow research. These are excellent.

The Omnivores Dilemma is both engaging and though provoking. It's All about the production of food in the modern age. In particular, four different meals.

The Code Book is one of my all-time favourites. As the title suggests it's about all forms of cryptography. If you have a mathematical bent I also like Singh's book about Fermat's Enigma).

u/acidwinter · 2 pointsr/AskReddit

I'm also a big fan of Simon Singh's The Code Book because he included ten encoded messages at the end offering a prize to the first person to break them. It took over a year from the book's release for someone to solve them.

u/whistlepete · 2 pointsr/technology

There's an interesting book about encryption that I read a few years ago that discusses exactly this. [The Code Book by Simon Singh] (http://www.amazon.com/The-Code-Book-Science-Cryptography/dp/0385495323).

Anyone interested in encryption and how it has evolved should read this book. bobcobb42 is absolutely right, some of the modern encryption techniques such as RSA are near impossible to break if applied correctly. In RSA two very large (the larger the better) prime numbers are multiplied to encrypt data. As long as the prime numbers used to encrypt the data are kept secret then the process of finding those number and reversing the encryption would take many many powerful computers working many many years to break. The reason for this is because to find the original prime numbers that were multiplied to get they key very large numbers would have to be factored, which is very hard to do since their is currently no algorithm that is known to do this.

IIRC the government actually gave the inventors of RSA or Diffie-Hellman, one of the two, a really hard time over their encryption because they couldn't break it so they didn't want it public.

u/munificent · 2 pointsr/programming

I quite enjoyed The Code Book by Simon Singh. It's a book on cryptography for the layman. Not really about computer science, per se, but it's fascinating and explains a lot about thinking algorithmically.

u/nakp88d · 2 pointsr/compsci

The Code Book by Simon Singh is a nice, informal introduction to cryptography including modern day cryptography.

u/blood_bender · 2 pointsr/GiftIdeas

ah, yeah they're sorta the same thing.

Two other ideas, if he's into books, If Hemingway Wrote Javascript is an awesome one -- he pairs up like, 100 famous authors with programming languages and writes programs as if he were the author.

Also, The Code Book is really cool too. A really interesting and in depth history of encryption.

u/liveat60fps · 2 pointsr/explainlikeimfive

The beginning of this video has a good explanation of how public/private key cryptography works, using the analogy of paint colors to show how one way functions make encryption like this possible. The math part is a little rushed, but the first half is a great visual aide.

I recommend reading The Code Book by Simon Singh if you're interested in the history of cryptography in general. The sections on the Enigma machine are fascinating.

u/ultimatekiwi · 2 pointsr/math

RSA and public key cryptography in general are fascinating ideas, and do have tremendous applications to "real life". For an extremely approachable/readable book about cryptography I highly recommend Simon Singh's "The Code Book". It doesn't delve very deep into the technical mathematics of cryptography, but it does do a great job of understanding the basic evolution of codes. ciphers, and cryptography. I wrote my high school IB extended essay on the history of RSA and public key cryptography, and this book was a great source. Again, you would probably get better recommendations for topics if you specified your current grade/level.

u/3point2 · 2 pointsr/funny

this book has great reviews. this guy is a genius.

u/ansermachin · 2 pointsr/AskReddit
u/lehmakook · 2 pointsr/mildlyinteresting

Just one table? Better get a million random numbers in case you run out.

http://www.amazon.com/Million-Random-Digits-Normal-Deviates/dp/0833030477

u/rowboat__cop · 2 pointsr/books

I’ve had a fun time reading this,
still waiting for the index volume so I can find my favorite parts more quickly.

u/SleepTalkerz · 2 pointsr/funny

One of my faves is the Million Random Digits book.

u/qwicksilfer · 2 pointsr/AskReddit

Oh god. Okay. I feel like I've been preparing for this post my whole life (or at least since I found these awesome things on amazon):

u/MarcEcko · 2 pointsr/AskHistorians

If it's a question of combat, print versions of either A Million Random Digits with 100,000 Normal Deviates (1955) or the full set of The Art of Computer Science (1968 - ...) carry some weight and double up as door stops or steps to reach the higher shelves.

u/TheHelgeSverre · 2 pointsr/PHP

If you want a very comprehensive (althought maybe a bit dry) resource on web app security, I recommend The Web Application Hackers Handbook, it covers most of the web security stuff like remote file inclusion, sql injection, csrf xss etc etc.

u/CodeThree · 2 pointsr/HowToHack

OWASP Testing Guide

Also check out the Web App Hackers Handbook. This is an extremely handy book to reference to during tests. It would be a good starting point for you to check out.

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/MikeCodesThings · 2 pointsr/AskNetsec

Some great resources are The Web Application Hackers Handbook. It's a long read but very in-depth. Link

If you want to practice as you read look into Damn Vulnerable Web App (DVWA) [Link] (http://www.dvwa.co.uk/), Pentester Lab challenges [Link] (https://www.pentesterlab.com/), bWapp. Learn how to use tools like Burp, ZAP, sqlmap, and BEEF (among others).

I've also heard that Security Tube has a lot of great videos but I haven't checked it out personally yet.

As for fundamental knowledge, you'll need to understand how the web and web applications work. Things like HTTP/HTTPS, HTTP methods, forms, Javscript, sessions, cookies, databases. Also about application input, application frameworks, application firewalls. If you don't have any programming experience, you should start learning some fundamentals to understand application logic and structure. This can help you think of assumptions that developers made and how you might be able to bypass or work around those assumptions to do things that weren't intended or anticipated.

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/ITestPenetration · 2 pointsr/security

Penetration Testing: A Hands-On Introduction to Hacking by Georgia Weidman is similar to the OSCP syllabus and a good introduction.

The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws 2E is the web application hacking bible.

Don't take any shortcuts, if you don't understand any topics read around them and make sure you do - that is usually a good start.

u/science830 · 2 pointsr/learnprogramming

When i was in the process of applying for Matasano Security, they had me read this book and said it covered web security (fit application security is your thing): http://www.amazon.com/The-Web-Application-Hackers-Handbook/dp/1118026470

u/kira156 · 2 pointsr/AskNetsec

The web application hacker's handbook is an excellent book for web applications pentesting. https://www.amazon.com/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470

u/TailSpinBowler · 2 pointsr/netsecstudents

What kind of coding, and what are you interested in regarding security exactly? I would brush up on some python personally.

If you are inclined to read, I think the following are essential.

u/ladywanking · 2 pointsr/cscareerquestions

Just do your degree and start exploring ethical hacking, get involved with community.

Personally, I think great ethical hacker needs great understanding of networking, assembly, and OS, all of which you can learn in UofT.
These 3 topics are critical, you actually need to understand how to find vulnerabilities to be great in cybersec.

Also, start attending https://www.defcon.org

This book has been recommended to me as a high level introduction: https://www.amazon.ca/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470/ref=pd_lpo_sbs_14_img_1?_encoding=UTF8&amp;amp;psc=1&amp;amp;refRID=195742DY502NMJ1N4JBT

Also, install cali linux and get some introductory level book on it.

Source: worked for a cyber sec in one of the Big4, worked with ethical hackers, and helped them with security scanning.


u/mhurron · 2 pointsr/AskNetsec

I've had this bookmarked forever (Probably linked to from here)

http://www.irongeek.com/i.php?page=videos/web-application-pen-testing-tutorials-with-mutillidae

I have no comments on the quality of the information, it's been on the master to-do list for damn near ever.

If you want to spend some money there is also http://www.amazon.com/gp/product/1118026470/ref=ox_sc_sfl_title_2?ie=UTF8&amp;amp;psc=1&amp;amp;smid=ATVPDKIKX0DER

(again, it's been mentioned here, and again, can't say anything about it personally, master to-do list)

u/netscape101 · 2 pointsr/AskNetsec

Thanks, what do you think of this book?
http://amzn.com/1118026470 (Web Application Hacker's Handbook 2nd Edition)

u/FooBarBazQ · 2 pointsr/learnjavascript

JavaScript &amp; jQuery: Interactive Front-End Web Development by Jon Duckett. I don't know what more you could ask from a beginner's JavaScript book. It doesn't read like a textbook, but instead contains full-color illustrations, analogies, syntax breakdowns, and examples with each new topic introduced on a new page. This is the most "modern" feeling programming book I've ever looked through. Just really good content for beginners presented in an attractive and clear fashion.

u/cleatusvandamme · 2 pointsr/exchristian

It could be non-religious related.

What materials/methods are you using to learn JavaScript?

I'm a web developer and there are times where I find myself struggling to learn something. I've noticed I do a lot better with videos than reading a book. I also do better with some book/video authors than others. It's nothing personal to those authors, it's just like high school sometimes you do better with a particular history teacher than another one.

I'd suggest trying the trial versions of different video services. You might want to look into Safari books online. For $15 a month you can rent up to 5 books. You could try out other authors and see how it goes.

I'd also recommend this book:
http://www.amazon.com/JavaScript-JQuery-Interactive-Front-End-Development/dp/1118531647

Jon Duckett is a really awsome writer!

u/iTipTurtles · 2 pointsr/javascript

JavaScript &amp; JQuery: Interactive Front-end Web Development I have been working through this and its quite good. Well structured and designed, so it isnt just a wall of text.

u/iDontDoMeth · 2 pointsr/learnprogramming

Jon Duckett, who wrote the HTML &amp; CSS book you bought (which is the best in my opinion) also just released his JavaScript book, which I am excited to read. Once you get a grasp on it, I would read JavaScript The Good Parts, by Douglas Crockford, who works for ECMA and helped write the language.

u/Dwaligon · 2 pointsr/javascript

Just read Jon Duckett's new Javascript book and this was a good gauge for how much I learned. Thanks!

u/_skywalker · 2 pointsr/learnjavascript

This is a good book for that. There's also many tutorials online, googling will help you out, and check Codepen.io as well.

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 &amp; CSS and JavaScript &amp; 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/kynovardy · 2 pointsr/css

Html &amp; css:
https://www.amazon.com/HTML-CSS-Design-Build-Websites/dp/1118008189

Also I assume you mean Javascript? Otherwise that's a pretty odd combo. A good Javascript book is this one by the same author:
https://www.amazon.com/gp/aw/d/1118531647

Used both of these for school. Very easy to read and surprisingly comprehensive. Very pretty as well

PS: people don't generally call html and css programming languages

u/NoEfficientAlgorithm · 2 pointsr/ASU

If you're just interested in learning for yourself, don't take it at ASU. It'll be cheaper and you'll probably learn more through other resources. Here's one put together by the University of Michigan on Coursera: https://www.coursera.org/learn/introcss

Or, you can do it the old fashioned way and pick up a book. This one, in particular, is very good.

https://www.amazon.com/HTML-CSS-Design-Build-Websites/dp/1118008189

After you get through that book pick up the Javascript and JQuery one (same author):

https://www.amazon.com/JavaScript-JQuery-Interactive-Front-End-Development/dp/1118531647/ref=pd_sbs_14_img_2?_encoding=UTF8&amp;amp;psc=1&amp;amp;refRID=72Z6B7X975GSJ4VVAZG9

u/iama_regularguy · 2 pointsr/learnprogramming

I think JavaScript is the way to go as well. Start with just plain vanilla and then go from there!

I would do the JavaScript course on codecademy (I would dabble with every language they offer too!) and then move on to this book (you can also find it for free).

Just an idea... You could love or hate web design. Who knows! But you have to start somewhere and start narrowing things down while learning general programming structures. Almost everything you learn at first is transferrable to other languages.

u/GoodVelo · 2 pointsr/learnjavascript

A friend who is learning JavaScript got this book I skimmed through it, I wish I had something like it when I learned JavaScript or programming!

u/Zoroaster9000 · 2 pointsr/CompTIA

You keep saying "A+ exam" in your post so I hope you are aware that there are actually 2 exams you have to pass to get the A+ and they must both be from the same series. Be sure to look over the exam objectives (listed here and here) and keep in mind that you only have 9 days as of today (21 June 2016) to pass both exams before they expire and the 900 series takes full effect. If the classes you mentioned don't start until fall semester you may as well start studying for the 900 series exams instead and give yourself some time. I highly recommend The All-In-One Comptia A+ Certification Exam Guide by Mike Meyers and Professor Messer. They're fairly easy exams but they're not that easy and they included a few topics I hadn't been exposed to before I started studying for them.

u/Jakomako · 2 pointsr/buildapc

If you're looking for something textbook-y, the Mike Meyers A+ Certification guide is very all-encompassing: http://www.amazon.com/dp/125958951X

It's more than just hardware though. Windows, networking, troubleshooting, even printers and cell phones.

Is that the sort of thing you had in mind, or something else?

u/DancingIsNotAdvised · 2 pointsr/it

I started reading the course material for CompTIA when I started looking at getting into IT but never got round to the exam. There was a fair amount of good stuff in the book I was reading, also a lot about stuff you really didn't need to know (like the max voltage of an IBM PCXT power supply from the last millennium).
If you are someone wanting to get into IT at ground level, with minimal working knowledge of a helpdesk, troubleshooting process or how IT as a field hangs together, I'd recommend at least reading the course material for CompTIA, then if you're still keen, do the exam, if nothing else it shows willingness to learn to an employer. After that look at the Networking+ and Security+ qualifications, or a Microsoft accreditation. Anything Office 365 these days is a licence to print money if you're looking to contract as an IT person (here in the UK as of the last 2 years or so at least).
This was the book I read, though that was about three years ago: https://www.amazon.co.uk/dp/125958951X/ref=cm_sw_r_cp_apa_R30vxbJ3FQJT2
Been in IT for just over three years, currently 2nd/3rd Line Engineer/Consultant and looking to go contracting in the next year. Any queries, let me know.

u/HopeWeAllPass · 2 pointsr/CompTIA

Hi, All of those things are an excellent start, but I think you need more. Do the free practice tests on the Exam Compass site (http://www.examcompass.com/comptia/a-plus-certification/free-a-plus-practice-tests). Some of their questions are VERY picky, but overall they're good prep. Do the tests on the Crucial Exams site, too (https://crucialexams.com/exams/comptia/a+/220-901/). See if your library has the new Mike Meyers book (http://www.amazon.com/CompTIA-Certification-Guide-220-901-220-902/dp/125958951X). Go through the questions at the end of each chapter. Use the CD that comes with the book as a source of more questions. Good luck to you!

u/OnlyFactsTho · 2 pointsr/CompTIA

Mike Meyers A+ 901 edition
https://www.amazon.co.uk/CompTIA-Certification-Guide-220-901-220-902/dp/125958951X/ref=sr_1_1?ie=UTF8&amp;amp;qid=1463150745&amp;amp;sr=8-1&amp;amp;keywords=mike+meyers

As for the courses it's up to you. I'm going to take the 901 next week and I self studied using Messer, Myers, and practice tests.

u/painess · 2 pointsr/ITCareerQuestions

I really enjoyed this book while studying for my A+ certification:


https://www.amazon.com/CompTIA-Certification-Guide-220-901-220-902/dp/125958951X/ref=sr_1_1?ie=UTF8&amp;amp;qid=1495120816&amp;amp;sr=8-1&amp;amp;keywords=a%2B


Even if you don't go for the cert, it is still a very good read, as it basically covers a little bit of everything from networking to hardware to Windows. It is pretty long @ about 1600 pages (about 1300 main material), but if technology is something that interests you, you will enjoy it. And if you are able to absorb everything from the book and have the extra cash, you might as well take the exam and have an A+ certification to put on your resume.

u/Hawkdup45 · 2 pointsr/pcmasterrace

This is what you need. CompTIA A+ Certification All-in-One Exam Guide, Ninth Edition (Exams 220-901 &amp; 220-902) https://www.amazon.com/dp/125958951X/ref=cm_sw_r_cp_apa_47KnzbN70YMGA

u/chocotaco1981 · 2 pointsr/computerscience

it's good for getting your foot in the door as a basic repair tech or helpdesk.

AFAIK Mike Meyer's book has been, and still is, the gold standard for books:
https://smile.amazon.com/CompTIA-Certification-Guide-220-901-220-902/dp/125958951X/ref=sr_1_1?ie=UTF8&amp;amp;qid=1497277667&amp;amp;sr=8-1&amp;amp;keywords=mike+meyers+comptia+a

u/huscarl18 · 2 pointsr/CompTIA

Woof, that's a whole lot of questions, here's some answers!

https://www.reddit.com/r/CompTIA/comments/9yieto/general_exam_tips_and_tricks/

Me personally, don't look at the whole of the cert, it's a mountain, take it one step at a time.

Also, the current edition of the A+ is going to be replaced shortly(start of the year) and there is a grace period of about 6 months. I would very much focus on the new edition, the 1001 and the 1002. My philosophy is this, whatever new stuff shows up on the 100x, you can't change the info you learn from the 90x series. a USB port on the 90x is going to be the same on the 100x, understand? https://certification.comptia.org/certifications/a#buyoptions

Also, just review some of the free options for study, but be prepared to throw some money out there for study materials https://www.amazon.com/CompTIA-Certification-Guide-220-901-220-902/dp/125958951X/ref=sr_1_1?ie=UTF8&amp;qid=1542683036&amp;sr=8-1&amp;keywords=mike+meyers

u/CaptainPoldark · 2 pointsr/CompTIA

CompTIA A+ Certification All-in-One Exam Guide, Ninth Edition (Exams 220-901 &amp; 220-902) https://www.amazon.com/dp/125958951X/ref=cm_sw_r_cp_apa_i_k6t2Db13MHWWP

u/liesthroughhisteeth · 2 pointsr/techsupport

If you can get your hands on a PDF of this guys text, you'll be glad to did. Well written, well structured, easy to digest and thorough.

u/printer_merchant · 2 pointsr/CompTIA

I've only passed the 901 and putting the A+ on my resume as "in progress" (listed it literally as "Certifications: CompTIA A+ (in progress)") has already gotten me a possible job opportunity. Guy knew right away what that meant and he just asked when I planned on taking the 902.

So yeah it'll definitely help with getting hired.

As for studying, look over the exam objectives and see how much of it you know. If it's less than half, buy the Mike Meyers book and read it front to back. If it's more than half, buy the Pearson ExamCram book and read that instead. Watch Professor Messer's videos in either case and use CrucialExams, ExamCompass, Professor Messer, and ExamCram practice tests. ExamCram had questions most like the ones on the actual test, ExamCompass is the hardest, and Professor Messer's pop quiz collection is the one that gave me a score closest to what I actually got (846 on the real 901 exam, 847 adjusted from a percentage on Professor Messer's pop quiz collection).

Good luck.

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

Awesome! I'm feeling more and more confident about this now! I'll most likely attempt a networking certification through CompTIA as well, but later on. I believe you're referring to the book that I saw on Amazon:

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

https://www.amazon.ca/dp/125958951X/ref=cm_sw_r_cp_api_nTIlybCJWQ4J1

It's the one I was considering buying, but I saw 2015 somewhere on the page and didn't know if it was still applicable.

u/WestonParish · 2 pointsr/pcmasterrace

This looks, verbatim, like the CompTIA A+ certification study guide, and I strongly recommend picking up one of these: CompTIA A+ Certification All-in-One Exam Guide by Mike Myers - I used an older edition a few years back before I took and passed the cert, and it was all I needed. This looks like an outline of this book for sure and will help you in this endeavor.

Good luck!

u/StrangeIntelligence · 2 pointsr/CompTIA

The Mike myers book is great if a bit wordy and half the price.

u/Cadwallader01 · 2 pointsr/CompTIA

Not sure what the difference is per say but I have this one:

https://www.amazon.com/gp/aw/d/125958951X/ref=mp_s_a_1_1?ie=UTF8&amp;amp;qid=1517975927&amp;amp;sr=8-1&amp;amp;pi=AC_SX236_SY340_QL65&amp;amp;keywords=a%2B&amp;amp;dpPl=1&amp;amp;dpID=51Vogw4seHL&amp;amp;ref=plSrch

I'm around 880 pages in of 1288 and I liked it pretty well it's just A LOT of material.

The disc questions are lame...they try to force you to buy stuff they are just sample stuff. The key to the disc however is that it includes a free copy of the entire book on PDF! I put the disc in and put the book on a flash drive to read at work during lunch. So it works out that I didn't buy a ebook version.

I would also suggest to go to udemy and buy his lectures they're for the 901 and 902...they should be $10 each and they complement the book perfectly....they like overview each chapter.

Once I finish the book I plan to rewatch the videos on udemy as a refresher as well as watch professor messer videos.

u/LOLBaltSS · 2 pointsr/sysadmin

http://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

PowerShell isn't really that bad once you get the hang of it.

u/lazytiger21 · 2 pointsr/sysadmin

I would suggest that you look at this book: Learn Windows Powershell in a month of lunches

It really helped me when I was starting out. As for what you are trying to do, I prefer the output using Quest AD tools for Powershell. They have a lot of really nice AD cmdlets. This would do it for you:

Get-QADGroup | export-csv C:\location\filename.csv

edit for typo

u/ambrace911 · 2 pointsr/PowerShell

If you are looking for an actual book, check out "Learn Windows PowerShell in a Month of Lunches"
https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

That's come up more times in various IT forums. The link I posted had the video version by the same author. I am going to get started on this myself. I know enough to get by, but think it will be good to go through the entire thing.

u/TunedDownGuitar · 2 pointsr/sysadmin

Glad to hear! If you want to learn more PowerShell, grab this book. It's becoming a standard read for new hires at my office.

u/Swarfega · 2 pointsr/PowerShell

There's a menu to the right of this subreddit with various links and book recommendations. You'll need to be on desktop version of the reddit website to see these though.

Personally I really like the Getting started with PowerShell 3.0 Jump Start.

Most will recommend the Learn Windows PowerShell in a Month of Lunches book.

u/cluberti · 2 pointsr/sysadmin

Also, it would be wise to grab the "Learn Windows PowerShell 3 in a month of lunches" at some point in the near future if you're going to go down the PowerShell path. Doing so is of course recommended, as most everything Microsoft has been releasing over the last few years has had management based on PowerShell to be as close to, or at parity with, the UI management tools.

u/jed_PK · 2 pointsr/PowerShell

The Powershell class i'm taking right now uses this book: http://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080
It does a good job explaining the how things work.

u/ihaxr · 2 pointsr/PowerShell

It took me a while to get good at PowerShell and I had a pretty extensive programming background prior to trying to learn it.

The Exchange cmdlets are also less than ideal when trying to learn... but it was also my first experience with PowerShell. They're usually pretty slow to run and aren't great from a syntax standpoint. The AD and file system cmdlets (Get-ChildItem / Get-Item) are more consistent, faster, and generally easier to work with.

Trial and error, as well as looking at code examples on /r/PowerShell is the way I ended up learning. You'll notice on /r/PowerShell people usually post very different ways of solving a problem and one isn't necessarily better than the other, but just use different features or logic.

PowerShell in a month of lunches is usually the recommended book / guide.

https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

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

u/reginaldaugustus · 2 pointsr/PowerShell

My advice would be to get this book.

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

check out this book

Learn Windows PowerShell 3 in a Month of Lunches
http://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

u/hueylewisNthenews · 2 pointsr/sysadmin
u/northendtrooper · 2 pointsr/ITCareerQuestions
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:

&gt;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.

&gt;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/ApprehensiveEdge6 · 2 pointsr/sysadmin

"how can I learn to script powershell without having the basics for syntaxes"

honestly, i think if you try going this route, you're going to wind up very frustrated. you really ought to start with the basics. you can't just jump straight to the "knowing" part -- have to go through the process of learning before you get there. crawl before you can walk, and all that.

i bought myself a copy of "Learn Powershell in a Month of Lunches" (amazon link: https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617294160/) and i like it. many people here on /r/sysadmin recommend it, as well. i would start there to build a good foundation. one of the earliest things the book teaches you is how to use powershell's built-in help and how to read error messages and such, which will become extremely helpful when you do get to the point where you start writing scripts.

buy that book, and/or ask your supervisor to buy you a license to a training site like CBT Nuggets or PluralSight. some people prefer videos and narration over books, but find what works for you, and remember to start with the basics and move up from there.

u/rcas312 · 2 pointsr/sysadmin

Agreed. OP, you nee to take some time and learn powershell - you can certainly do all the tasks that you listed in your post, but again, you need to learn the basics. I suggest starting with this book. Best of luck.

u/imwearingatowel · 2 pointsr/sysadmin

Not really fair to link to a PDF copy of the book. It's a fantastic book and worth purchasing and supporting the author.

It can be purchased on Amazon

u/Havilland · 2 pointsr/linux_mentor

The Unix and Linux systems administration handbook is also worth it’s money. https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057


If you are doing more with virtualization and automation have a look at vagrant, it will help you get an environment up and running quicker.


As soon as possible also try out other virtualization stacks as kvm, xen and lxc. These are some of the most used and free ones. VMware is the paid contender in most places.

u/cstoner · 2 pointsr/linuxadmin

Last time I remember leafing though this guy it was still very relevant.

It's a lot of basic UNIX/Linux nuts and bolts stuff.

u/Lunarblu · 2 pointsr/linux

I recommend this book to everyone I taught Linux to. As some people have already commended on learn to program first. Linux knowledge will come.

http://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057

u/xgunterx · 2 pointsr/linux
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/Medicalizawhat · 2 pointsr/linuxadmin

I recently got a job as a junior admin and found Unix and Linux System Administration to be really good. There is also a nice CBT Nuggets series on Linux which is a great overview, especially when watched while reading LPI Linux Certification in a Nutshell as the book complements the videos.

If he already knows another programming language Dive Into Pythion is great for getting up to speed quickly.

u/feaks · 2 pointsr/sysadmin

I think you meant this book.

&gt;Information in this book generally applies to all of our example systems unless a
specific attribution is given. Details particular to one system are marked with the
vendor’s logo:

&gt;Ubuntu® 9.10 “Karmic Koala”
&gt;
&gt;openSUSE® 11.2
&gt;
&gt;Red Hat® Enterprise Linux® 5.5
&gt;
&gt;Solaris™ 11 and OpenSolaris™ 2009.06
&gt;
&gt;HP-UX® 11i v3
&gt;
&gt;AIX® 6.1

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/issmkc · 2 pointsr/pcmasterrace

&gt;nice error message

Oh yeah, reminds me of those gems:

ERROR: Root device mounted successfully, but /sbin/init does not exist.
Bailing out, you are on your own now. Good luck.

Uhhuh. NMI received for unknown reason 20.
Dazed and confused, but trying to continue

Linux is good and informative when something screws up and you can usually debug and fix most issues using a combination of google/documentation/logic/common sense barring incompatible/broken hardware, but the general public doesn't want to study ULAH to be able to use their computer, thus the downvotes.

u/nomeansnook · 2 pointsr/linuxclass

If you're talking about this book, it's one of my favorites. It's the book I've recommended as a supplement to everyone I've taught thus far.

u/trabant00 · 2 pointsr/linux

Find an intern job at a small company that does linux based IT consulting, there are plenty of those. The pay will be shit, the hours will be long but what you'll really looking for is a good tutor. Read http://www.amazon.com/Linux-System-Administration-Handbook-Edition/dp/0131480057

u/poply · 2 pointsr/linux4noobs

I hear this is great UNIX and Linux System Administration Handbook

Although I can't personally vouch for it.

u/stanwell_ · 2 pointsr/linux

I would recommend this one

u/stevelosh · 2 pointsr/programming

You're lucky then. A ton of the books for my CS degree were $90+.

Here's a current example: the book for &lt;http://ai-class.com/&amp;gt;, which has over 100,000 students registered now, is $116 on Amazon: http://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597/ref=sr_1_1?ie=UTF8&amp;amp;qid=1317855027&amp;amp;sr=8-1

Edit: Dear Markdown, you can be a dick sometimes.

u/loniousmonk · 2 pointsr/askscience

I don't know where you've been looking, but Bayesian networks have been around long enough that they are covered quite well in textbooks. The very popular AI: A Modern Approach (Russell &amp; Norvig) has a good overview of the basics and it is very well written with plenty of examples, as far as I recall. If you really want to get in depth, the "bible" on Bayesian Networks is the fairly recent textbook Probabilistic Graphical Models (Koller &amp; Friedman). I'd recommend finding PDF samples or something before you buy them, of course. And don't worry if you feel some Bayesian Network stuff is over your head ... this is mostly graduate-level CS stuff, so you might just need to be patient =P

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/GreyMX · 2 pointsr/artificial

The classic book for AI is the Russel-Norvig book which gives a pretty comprehensive overview of the fundamental methods and theories in AI. It's also fairly well written imo.

The third edition is the latest one, so it's going to be rather expensive. You're probably just as well off with the first or second edition (which you should be able to find much cheaper) since the changes between them aren't very significant.

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

Which kind of AI do you have in mind?

If you wanna go deep academical to it you should read Artificial Intelligence A Modern Approach (3rd Edition)

u/sarahbau · 2 pointsr/artificial

I have to throw out the obligatory, "[Artificial Intelligence - A Modern Approach] (http://www.amazon.com/Artificial-Intelligence-Modern-Approach-Edition/dp/0136042597).&quot; It really is quite good.

u/sketerpot · 2 pointsr/IAmA

The standard introductory AI textbook is Artificial Intelligence: A Modern Approach, by Russell and Norvig. It can be a bit heavy, though.

u/ProfessorAlgorithm · 2 pointsr/AskComputerScience

Introduction to Computer Science: https://mitpress.mit.edu/books/introduction-computation-and-programming-using-python-1 (basic programming and problem solving)

Algorithms: https://mitpress.mit.edu/books/introduction-algorithms (as you have heard) It is not very easy to read, but the content is on point.

Artificial Intelligence: https://www.amazon.ca/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597 (as above, this is a seminal book, but not the most approachable)

u/Dansio · 2 pointsr/learnprogramming

Then learning Python would be very useful for you. I have used the book called Automate the Boring stuff (Free).

For data science and machine learning I use: Data Science from Scratch and Hands on Machine Learning with Scikit-learn and Tensorflow.

For AI I have used Artificial Intelligence: A Modern Approach (3rd ed.).

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/eatsleepravedad · 2 pointsr/philosophy

Useless, conceited, futurist masturbation.

You want the theoretical framework of AI, go study math and programming, then go read Russell &amp; Norvig, or if you want philosophy without the practicality, Hofstadter.

u/dzjay · 2 pointsr/learnprogramming

I enjoyed this book and the author has an online course about Algorithms too.

u/somekindofsorcery · 2 pointsr/compsci

Tips and pointers for writing good Java code
http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683

Algorithms in Java with code examples
http://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1416453105&amp;amp;sr=1-1&amp;amp;keywords=algorithms

For mobile development, check out the Big Nerd Ranch books. They contain guided projects that help you learn a variety of core features of mobile programming.

u/IRLeif · 2 pointsr/learnprogramming

Thanks! Just to make sure, do you mean these two books?

  • Introduction to Algorithms
  • Algorithms

    If so, I'm glad you mentioned those. Both of them are already on my to-read list, but they were further down than Knuth's work. Since, as you say, they might better for starters, I'll check those out first.

    By the way, I have also heard some good things about this one:

  • The Algorithm Design Manual

    Have you any experience with that book? It's also on my to-read list.
u/rjcarr · 2 pointsr/learnprogramming

Doesn't the course offer a book? The professor might suck, but what about the textbook?

Otherwise, I think these two are the most commonly recommended algorithm books:

https://www.amazon.com/dp/032157351X

https://www.amazon.com/dp/0262033844



u/knechtsunderstudy · 2 pointsr/serbia

&gt; Ako krene sa C naucice kako da stedi na memoriji i pise efikasne programe.

Ako krene sa C, odustaće posle trećeg segfault-a JER IMA 13 GODINA.

&gt; [C previše komplikovan] nije

Možda ne tebi ili meni. Ali, evo, napiši mi kod koji će da u skup stavi imena gradova "London" i "Madrid" na C-u i onda to ispiše, onda ću ja to isto u Ruby-ju, i videćemo koliko je šta kompleksno.

&gt; Vreme izvrsavanja je nebitno

Pogledaj sve, ali pogotovo slajd 8.

&gt; Algoritmi na visokim jezicima... ne ide u istu recenicu.

Onda mi objasni zašto je najpopularniji udžbenik o algoritmima na Javi (ili pročitaj u njemu zašto je). Jedina druga poznata, CLRS, je u pseudokodu (jer je i Java previše low-level). Znaš li kako funkcionišu string-ovi u C-u? Hoćeš klince da učiš malloc i calloc i kastovanje void* ili kako funkcioniše tok kontrole?

u/ivansonofcoul · 2 pointsr/learnprogramming

Basic:

Building Java Programs

Interview Practice

Intermediate:

Algorithims

These are just a few books with good reviews that are also used in computer science curriculums at MIT or Princeton can't remember which and UW.

I can also post some basic ones too if you would like

u/williamhasting1066 · 2 pointsr/sysadmin

I'm going to recommend a book: https://www.amazon.com/Practice-System-Network-Administration-Enterprise/dp/0321919165

Read the first edition of this 20 years ago. Great book about doing the "job" of being a sysadmin. Nothing OS specific.

Also, learn a scripting language. You're not a real IT guy unless you know one. Python is my preference, but PowerShell is fine if you primarily work in a Windows environment.

u/inictu_oculi · 2 pointsr/sysadmin

If you are looking for stuff to do in your environment, this book will give you some pretty good pointers:

The Practice of System and Network Administration

u/dropped_packet · 2 pointsr/sysadmin

The Visible Ops Handbook: Implementing ITIL in 4 Practical and Auditable Steps

The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT (3rd Edition)

For us a Change is any change to the environment that isn't controlled by a separate process, like new employees, termination, etc.

If your not sure, it's a CM.

u/dmen91 · 2 pointsr/sysadmin

So I have the MCSE Mobility and I do not know if that alone will last.

Would rather say it depends on your skill. You can also become a sysadmin without a certificate as the others have already mentioned. The MCSE Mobility does not really go deeper into server landscapes like the MCSA Server 2016 does.

The topics to be covered is:

Deplyoment

Inunte

And SCCM with intune I think.

I chose Deployment because I already had experience.

This contains:

LTIDeployment (mdt)

ZT Deployment (sccm)

WDS

USTMIf you really want to go deeper I can recommend the following book

is also recommended here in the wiki.

https://www.amazon.com/Practice-System-Network-Administration-3rd/dp/0321919165/hope you get your sysdamin place :)

u/jpochedl · 2 pointsr/sysadmin

Or for cheap starters, this book with an overly long title:

The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT (3rd Edition)


https://www.amazon.com/Practice-System-Network-Administration-Enterprise/dp/0321919165/ref=sr_1_1?ie=UTF8&amp;amp;qid=1501175669&amp;amp;sr=8-1&amp;amp;keywords=practice+of+system+and+network+administration

u/aerborne · 2 pointsr/homelab

Did you get that old edition or the latest 3rd edition with it's cloud admin partner?

u/skadogg · 2 pointsr/sysadmin

Check out "The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT (3rd Edition)" by Thomas Limoncelli.

https://www.amazon.com/dp/0321919165

I'm also pretty new to this job, and this book has been really helpful in better understanding all that we get to do.

u/terefere1234 · 2 pointsr/sysadmin

I am in a similar boat as OP and also found the book you recommended, so just wanted to add that there is a new edition coming very soon, the one you linked is from 2007.
https://www.amazon.com/Practice-System-Network-Administration-3rd/dp/0321919165

u/Strid · 2 pointsr/sysadmin

https://www.amazon.co.uk/gp/product/0321919165/ref=oh_aui_detailpage_o02_s00?ie=UTF8&amp;amp;psc=1 deals with a lot of issues, among them support/helpdesk/people stuff.

u/obiwan90 · 2 pointsr/cpp_questions

Oh, I just see that the great price is for the first edition. The second edition is quite a bit more expensive, also used, but at $45 still very much worth it, I'd say.

You wouldn't learn anything wrong from the first edition, but there have been a few exciting changes and additions to C++ lately (C++11 and C++14 standards), which are touched upon in the second edition.

u/Cristaly · 2 pointsr/leagueoflegends

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

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

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

u/Lorinius · 2 pointsr/robyte

Super tare, o motivatie in plus sa ii dau maxim :)!
Din ce invat efectiv acum este cursul asta,
https://www.udemy.com/video-course-c-from-beginner-to-expert/, am ajuns la bitwise operators.
Ca extra lectura pe autobus ori cand sunt on the move mi-am scos cartea asta https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784?ie=UTF8&amp;amp;ref_=asap_bc. E scrisa foarte bine cel putin cat am reusit eu sa citesc, ma prinde.

In principiu am idee ce inseamna GIT Hub evident ca nu am lucrat efectiv cu el, bug trackere am putina cunostinta de JIRA si Mantis, dar in rest de ce ai scris urmeaza sa invat, ergo e chineza deocamdata :)).

Multumesc tare frumos inca odata!

u/Hodorgasm · 2 pointsr/cpp_questions

I'm not the best source of advice for books. Once you have a good grasp of C++ I would suggest Effective Modern C++ by Scott Meyers. I haven't read the book but Programming: Principles and Practice Using C++ (2nd Edition) would be the book I would suggest for beginners to C++. It's written by the inventor of the language, it's for beginners, and crucially, it covers the C++11/14 standards. I've read other books of his and enjoyed them.

Whatever you do, stay away from "Learn C++ in ... Days!" type of books.

u/alkhatib · 2 pointsr/Cplusplus

I'll repeat what /u/Transputer said: You need a book.

Especially since you are learning C++ from scratch and it's your first language.

This book is written by the creator of the language, it's recently updated to cover the new additions by the C++11 and C++14 standard.

It's designed to teach first year university students programming in C++

http://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784/

Your other option is to learn Programming through another language that might have video lectures or tutorials (Java?) once you are familiar with the concepts you can pick up a smaller book and get acquianted with C++

Good luck.

u/InjunJ03 · 2 pointsr/space

I also strongly suggest this book if your are just getting into programming!

Programming: Principles and Practice Using C++ (2nd Edition) https://www.amazon.com/dp/0321992784/ref=cm_sw_r_cp_apa_i_u-avCbMTKX625

A big step with coding is giving yourself projects. Code an Arduino or other microcontroller to work on a model rocket, or control a miniature rover. Little projects like this will give you a reason to learn, and give you experience related to the field.

u/t3amkill3r · 2 pointsr/cpp

Yes, you are right, this one is quite good.

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

There is book written by the creator of the C++ for people who are learning how to code: https://www.amazon.com/dp/0321992784/?tag=stackoverfl08-20

Other than that, there are the r/learnprogramming sub, the http://cppreference.com where you can learn everything about the language, from the the very beginning and the other books written by Scott Meyers and the creator of C++ himself. All of them are great. Hope it helps.

u/Steve_the_Scout · 2 pointsr/learnprogramming

I've been writing C++ for about three years now, so I'm mostly familiar with C++11 (one of the newer updates that added quite a bit of functionality and sort of "updated" the language to make it more modern), though there are definitely people with way more experience in it than me on here.

C++ is a language with a very steep initial learning curve that drops drastically once you understand the basic concepts and write a few programs to practice the concepts involved. If you feel like it's too difficult at some point, take a break, then come at it from a different approach (and of course write a few tests to make sure you're getting it). This applies to other languages almost equally, of course.

You should try to learn C++11 (and C++14, a minor update) more than older variations of the language because it added quite a bit to make it easier to read and write with.

Online guides for C++ tend to be outdated or just plain wrong, it's actually one of the few languages with that quality (although that's changing slowly). It's best to get a book like The C++ Programming Language or Programming Principles and Practice Using C++ (which I would recommend for you over the former, which is actually more of a reference book). By the way, they're both authored by the initial creator of the language, so they also explain some of the design choices and details of the language which may or may not help you better understand it.

Beyond that, just do what's suggested for any other programming language (look at references, read actual programs written in it, etc.)/

u/bitofabyte · 2 pointsr/GlobalOffensive

This is C++, there are various resources for learning it. It is more difficult than some other programming languages, I would personally recommend that you start with something easier to learn like Python.

C++ Book - https://www.amazon.com/dp/0321992784/

Other C++ books - http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list

Python book - http://www.diveintopython3.net/

Other Python books - see sidebar of /r/python

u/AlexeyBrin · 2 pointsr/gamedev

Since you are a C++ beginner, you should initially concentrate your efforts in learning the language.

My suggestion is to read Programming: Principles and Practice Using C by the father of C++ Bjarne Stroustrup https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784/ and do the exercises from the book. Try to do these on your own, if you are really stuck on something search an alternative explanation, ask on Reddit /r/learnprogramming or Stackoverflow.

Also, very important, use a modern C++ compiler like the one from Visual Studio 2017 if you are on Windows, G++ 6 or 7 if you are on Linux, and latest Xcode if you are on macOS.

u/mredundant · 2 pointsr/gamedev
u/nikkocpp · 2 pointsr/france

( quand je dis HTML+javascript, c'est javascript le langage de prog.)

Si tu veux apprendre le C++, sous windows tu peux télécharger VisualStudio Community (je crois que c'est comme ça que ça s'appelle la version gratuite maintenant) de Microsoft et essayer.

Sur le net ya des tonnes de cours sur google, en français en anglais pour commencer. Il faut déjà pratiquer et mettre les mains dans le cambouis.

A savoir après des années de stagnation le C++ évolue (presque) vite, certains livres parlent de C++11 alors qu'on est au standard C++17 et bientôt C++20

Après, si tu veux vraiment apprendre des trucs pour :

https://www.amazon.fr/Programming-Principles-Practice-Using-C/dp/0321992784

https://www.amazon.fr/Tour-C-Bjarne-Stroustrup/dp/0134997832/

https://www.amazon.fr/C-Programming-Language-Bjarne-Stroustrup/dp/0321563840/

https://www.amazon.fr/Effective-Modern-C-Scott-Meyers/dp/1491903996/

Sans oublier sur le net les bonnes pratiques, à jour:

http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines

Et sur youtube il y a plein de vidéos aussi, et des conférences.

Et je conseille d'apprendre le C en même temps, parce qu'en C++ on utilise beaucoup de librairies en C.

https://www.amazon.fr/langage-2e-éd-Norme-ANSI/dp/2100715771

u/Pseudohead · 2 pointsr/Cplusplus

It is an introductory-level book so it does cover the basics, and progresses through topics building only off previously covered material, so it's not like it suddenly drops you off in the middle of enterprise-level topics. But there isn't a lot of hand-holding. As a beginner you might need to do a bit of additional googling to feel confident that you've really grasped the material in the book.

I initially found Accelerated C++ on this list of recommended books on StackOverflow.com. It lists Programming Practices and Principles in C++ as the recommended book for people who want to learn C++ but have no prior programming experience. I'm not familiar with that book, but perhaps it would be more suitable for a non-programmer :-)

u/FrozenLava · 2 pointsr/IWantToLearn

If you want an interesting history of cyptography, read Simon Singh's The Code Book

You can write perfect encryption by hand using a One Time Pad. It requires exactly zero high level mathmatics. The reason it isn't used as often as other encryption methods is that it requires an exchange of keys each time it is used.

u/azyd · 2 pointsr/math

The Code Book by Simon Singh has a nice section on the Enigma machine and at least some of how it was cracked. It's a little simplified but not significantly*. I took a course years ago that went really in depth on cracking Enigma by hand, and it used Singh's book as the main textbook for that part with a lot of additional handouts that I don't have any more.

  • The really important point, mathematically, is that conjugate permutations -- σ and ρ are conjugate if σ = π^(-1)ρπ for some permutation π -- have the same cycle structure (find a good Group Theory book if you don't know about cycle structures).

  • Because the Enigma operates by sending a signal through some wires (permuting as π), then through a reflector (ρ), then backwards through the same wires (now permuting as π^(-1)), large parts of that scrambling have no effect on the cycle structure.

  • If you can determine the cycle structure of the overall encryption, then you can narrow it down from millions or thousands of possible settings to only hundreds or even dozens depending on the particular cycle structure. Then you can actually make progress by hand.

    * Different branches of the gov't and military had different Enigmas, and some really were more complicated and way harder to crack. The "standard" army one is basically like Singh describes, although he assumes that the inner wirings of the rotors are known. In fact Rejewski had to figure that out too, and though that also used cycle structures, it's much more technical.
u/StardustSapien · 2 pointsr/AskScienceDiscussion
u/bluebathysphere · 2 pointsr/compsci

The two starting books that gave me a great deal of understanding on systems (which I think is one of the toughest things to grasp and CLRS and the Art of Programming have already been mentioned):

[Computer Systems: A Programmer's Perspective] (http://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/0136108040/ref=sr_1_2?ie=UTF8&amp;amp;qid=1407529949&amp;amp;sr=8-2&amp;amp;keywords=systems+computer)

This along with its labs served as a crash course in how the system works, particularly a lot about assembly and low-level networking.

The Elements of Computing Systems: Building a Modern Computer from First Principles

I've mostly only done the low-level stuff but it is the most fun way I have found to learn starting all the way at gate architecture. It pairs well if you have read Petzold's Code. A great introduction to the way computers work from the ground up.

u/Arrgh · 2 pointsr/AskComputerScience

Read this book. The first half, in which it shows you how to design and instantiate (in an included simulator) flip-flops, registers, an ALU and RAM, are extremely enlightening.

The second half is about software, so I didn't bother to continue. But the first half is well worth the price of admission. Oh, related to /u/panda_burgers' comment below, this is the book for the NAND2Tetris course. But their site is throwing malware warnings at the moment.

u/DaSkywalker · 2 pointsr/learnprogramming

Got THIS, it´s amazing.

It starts out with the fundamental principles of logic gates and transistors, moving through memory adresses and basic assembly, through to making your own compiler and a basic OS. Each chapter has a nice little simulator program you can download and use together with a number of exercises, to help you consolidate what you´ve learnt.

And no, I didn´t write it! Or sell it for a living. Nor am I in any way affiliated with anybody having to do anything with the production or sale of this book. I just read it. It´s great.

u/greentide008 · 2 pointsr/compsci

You want to read Charles Petzold's book Code: The hidden language of Computer Hardware and Software. This is another good one.

u/Webweasel_priyom · 2 pointsr/sysadmin

Actually to give you some better advice try this:

https://www.amazon.co.uk/Elements-Computing-Systems-Building-Principles/dp/0262640686

It's available free online, but choose amazon as I don't know the link sites. I bought a hard copy.

This is a university course written by a Harvard professor. You start with basic binary logic and end up writing a basic operating system. It will teach you how a computer works from the ground up, as you basically build your own virtual CPU in software and write a compiler for it.

Yes, its really hardcore but you don't need to do the whole thing in a few weeks. Stretch it out over 5 years while you learn on the job.

The point is, it teaches you HOW a computer works. With that understanding, everything else becomes a lot easier. It grounds the concepts into you that are fundamental to everything, from hardware to software to networking. All of it makes much more sense when you have the foundation to understand it.

Others I'd recommend:

Any of Peter Norton's books on the IBM PC from the 80's. You'd think they would be irrelevant by now, but we still use IRQ's on modern hardware, even if its far abstracted by the OS now.

I'm a systems architect now, after 19 years in the industry, but pulling the books from my shelf that got me here:

Peter Norton: Inside the IBM PC and PS/2

Peter Norton: Programmers guide to the IBM PC

Brian Kernighan/Rob Pike: The Unix programming envrionment

Will Asop: Unauthorised Access

Street/Nabours/Basking: Dissecting the hack

Gerald Weinberg: The psychology of computer programming.

Oh and anything written by Kevin Mitnick

u/nowonmai · 2 pointsr/programming

Another good place to start: http://www.amazon.com/The-Elements-Computing-Systems-Principles/dp/0262640686
It is not just a text, it's a course that walks through building a virtual CPU using Hardware Description Language and a Hardware Emulator, and then coding Tetris on top of it.

It starts with a single NAND gate and go on from there.

u/drtwist · 2 pointsr/ECE

you could start here. or here.

u/potifar · 2 pointsr/AskReddit

You might want to check out something like this book to make it all come together.

u/factorysettings · 2 pointsr/pics

I'm a self taught programmer, so I don't know what CS degrees entail, but I highly recommend the book Code and also another one called The Elements of Computing Systems.

The former pretty much teaches you how a computer physically works and the latter teaches you how to build a processor and then write an OS for it. After reading those two books you pretty much know how computers work at every level of abstraction. I think that's the way programming should be taught.

u/errorkode · 2 pointsr/learnprogramming

You might want to look at The Elements of Computing Systems, also known as "nand2tetris", It will start you out with nothing more than a NAND logic gate and you'll build the whole stack, from ALU to CPU to compiler to simple OS. Quite fun and kept reasonably simple.

u/cswinteriscoming · 2 pointsr/compsci
u/hooj · 2 pointsr/explainlikeimfive

LondonPilot has an excellent explanation.

If you want everything explained in a book, look at Code by Charles Petzold. It's basically an ELI5 Computers through all the layers of abstraction, literally starting with binary.

If you want a hands on approach, check out The Elements of Computing Systems. It will take you through building the gates that LondonPilot is talking about to building Memory, ALUs, and even a CPU. It continues on to assembly language programming, writing a compiler, writing a high level language, etc.

These books combined is really a large chunk of what you should know with a BS in Computer science.

u/Waitwhatwtf · 2 pointsr/EngineeringStudents

Elements of Computing Systems. Any lower level than that and you're moving closer to analog circuit territory.

u/gotomstergo · 2 pointsr/compsci

Remember that CS is much about the physical computer than anything else. Computers are made possible by multiple layers of abstraction. They begin with semiconductors, boolean logic, machine language, assembly language, compiler/linker, leading up to high level languages like python and C. Computers organized memory hierarchy to arbitrate between the access time and availability of different types of memory (cache, DRAM, hard drive) .
In addition, the current trend seems to be much focused on the multi-core, parallel system, since engineers can't get enough performance improvement just by implementing pipelines or faster clock cycles.

So that's that. If you enjoy this realm of CS (it's more of computer engineering to be precise), you should read about these books. Nevertheless, this knowledge will "expand", as you put it, your understanding of computing system in general.

http://www.amazon.com/The-Elements-Computing-Systems-Principles/dp/0262640686/ref=pd_sim_b_27

http://www.amazon.com/Computer-Organization-Design-Revised-Edition/dp/0123747503/ref=sr_1_1?ie=UTF8&amp;amp;qid=1344489171&amp;amp;sr=8-1&amp;amp;keywords=hennessy+computer+organization

u/RibMusic · 2 pointsr/C_Programming

As other's have said, K&amp;R is a great introduction to C, but not a great introduction to programming/computer science. I think more people should try to C as their first language as it gives the student a better idea of what the computer is actually doing than high-level languages. I wish I had a modern book I could refer you to for learning C as a first language, but I am out of the loop, however, I have heard great things about Harvard's free online course: Introduction to Computer Science which uses C (and some other languages).

As far as learning how to be a better programmer, I think one of the key things is to 1) strive to understand what is happening under the hood. 2) Break large problems into smaller ones 3) Logically order the operations needed to complete the tasks that solve the problem, 4) Learn multiple programming languages.

Some tips for becoming a better programmer


Strive to understand what the computer is doing when you execute your program

Understanding what the compiler/interpreter is doing with your source code, how the the processor executes the binary and how information is stored/accessed in memory will help you write more efficient code. The C language is great for learning these things once you start to wrap your mind around it. I would also recommend learning computer organization and hardware. One book I found that really helped me learn what a computer does is The Elements of Computing Systems: Building a Modern Computer from First Principles. I would recommend a casual reading of it, don't get too hung up if you don't quite 'get' it. Read it and see what sinks in. After you get better at C and maybe learn another language, come back to this book and read it again with closer scrutiny.

Break large problems into smaller ones. Logically order the operations needed to complete the tasks that solve the BIG problem

Before I write a single line of code I will spend days, weeks or even months just planning the program out. Flow charts and lists, pseudo code are your friend. Identify your large problem, think about all the different steps needed to get there, write them all down. Determine how to what you need to do to complete each step. Determine if you are doing the same task multiple times (I keep writing data to this log file, I keep checking to see if this array is full, etc.), if so, then you need a function for that. Write this all down as a human readable list of steps. Once you think you have solved the big problem, start coding the small stuff. Write small programs that complete each step you identified and test each little program. Once you've written all those little programs, put the pieces together. Check out How to Think Like A Programmer. It's an excellent book in this area.

Learn multiple programming languages

Again, stick with C until some things are really clicking for you. Eventually though you need to learn another language or two before the "thinking like a programmer" will really sink in. The more languages you learn, the easier it is to learn even more languages. You will begin to see the patterns in languages. You will notice the different approaches that different programming paradigms take. There is a reason that nearly every book, course or tutorial on learning a language follow very similar trajectory: What datatypes exist in this language? How to declare a variable of a particular type. How to output text to the screen, how to cast a variable to a different type, how arrays work in this language, how IF/Then/Else works, How loops work, etc. These are things (nearly) every language has and they are the first steps to learning how to work with that language.

Hope some of this helps!

u/ghostdog20 · 2 pointsr/learnprogramming

This is an excellent book, I enjoyed reading it. I would also recommend the Elements of Computing Systems.

u/TheDrownedKraken · 2 pointsr/learnprogramming

You should be able to find the book on Amazon.

Here Its’s not called nand2tetris.

Edit: I was a little unclear. The book is not called nand2tetris, but the associated courses are/were. You can go to nand2tetris.org to find the author’s website and links to their coursera courses. You really don’t need the courses. The books is great.

u/SaturnMoth · 2 pointsr/compsci

Elements of Computer Systems: Building a Modern Computer From First Principles is a great introduction to a wide range of computer science topics. It covers principles from the bottom up, and is a good place to start for things like computer architecture and programming language design. It doesn't cover things like networking or algorithms/data structures, but if you're interested in systems, this is a great book.

u/GuinessDraft · 2 pointsr/IWantToLearn

I was interested in the same topic, I purchased this book:

http://www.amazon.com/gp/product/0262640686

I haven't gone all the way through it yet, but it helps you learn where assembly code came from, and low loevel interactivty between hardware and software.

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/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.