I will be starting software engineering school in June. The school that I will be attending is known for its difficulty and I want to be as prepared as possible. My question is the following: How does a software engineer think? What goes on in the mind of a software engineer that attempts to solve a problem? What's the best way to get a big picture view of a computer language.Also, how do I into C? That's the language we're starting from and I'm having a difficult time learning it.
>software engineeringnot science or math
>>10554916yes it is
>>10554907Why don't you start by reading the /sci/ wiki, then the sticky?
>>10554907just try stuff until it werks.
>>10554920>yes it isSoftware engineers do not use the scientific method.
>>10554931Neither do physicists.
>>10554907>how do I into C?> K&R book. Classic, out-of-date in some ways but not ways that matter to a beginner.> Install gcc and make some simple text-based games. Something like "choose your own adventure" or an rpg-style battle game> In one of them, practice file I/O by making a quiz-type game with a .txt file containing questions and answers.> If this all goes well, try making a little spaceship game of one kind or another. Text (ncurses) or graphics are ok>Congrats, you've graduated from retard academy while keeping yourself mildly entertained. Now start training on contest problems off Topcoder or similar for a couple of months>when you're ready, try to read system code like the Linux scheduler. This shit is hard but it's ideally the general kind of shit you want to be working on 5-10 years from now so start getting comfortable with it
>>10554907The initial difficulty of learning languages falls off pretty quickly and it then becomes not really that different from studying math, lots of time with pen and paper trying to understand how structures and algorithms work. If you want a true understanding of what is happening behind the scenes you would have to study the basic hardware of digital logic and/or gates can create an alu and flip flops can create memory combining these creates rudimentary computer.
>>10554961Learning languages does have a really quick fall off when it comes to difficulty. However, the actual way to get better with algorithms comes to pen, paper, and math textbooks on the matter. Architecture is really important to systems, and there's a lot of overlap, but basic hardware and digital logic is 11) not that difficult2) organizational structures for implementing a digital computer, but not really something that informs you as to ways the computer can be exploited as a model of mathematics I say this as someone who spent extensive amounts of time in systems/on the embedded level. The basics start with math, always.
>>10554931but sedgewick says algorithm analysis follows the scientific method and sedgewick is smarter than you
>>10554907>how do i into cc programming: a modern approach newest edition on libgen
>>10555940looks good, thanks
This is a good book on c https://www.amazon.com/Expert-Programming-Peter-van-Linden/dp/0131774298
>>10556044thats a good one although it explicitly operates under the assumption that the reader already knows how to program in c
A software engineer, among other things, is thinking about trade offs. How easy will approach X be to implement vs Y. How many many hours will it take. How maintainable will it be. How extensible will it be. What might my performance/feature requirements look like in N years. Programming languages are really just a small part of it.
>>10554907so basically if you are really serious about c, it goesprogramming c: a modern approach -----> expert programming: deep c secrets ------> numerical recipes in C (2nd edition) 2nd edition because the 3rd edition is c++if u finish those u might as well call urself dennis ritchie's daddy
>>10556081How about the 1st edition on K.N. King? I'm a cheapskate.
>>10556289just get it on libgen you donutAlso I’m sure either edition is fine but the 2nd isn’t even expensive and if ur that poor u should be using libgen anyway
>>10556289>pays for bookslook at uncle Moneybags over here
>>10554907>What goes on in the mind of a software engineer that attempts to solve a problem?you have a machine that does EXACTLY what you tell it to do, and it is incapable of understanding anything. how would you get it to solve a problem? furthermore, can you prove that, given some set of assumptions, it will always generate the correct result?
>>10554907>My question is the following: How does a software engineer think? What goes on in the mind of a software engineer that attempts to solve a problem?Read the textbooks listed in this thread, go to class, go to office hours, do practice problems. It's just something that will come with time because it is very much a different mindset that doesn't come naturally to most. Assuming you're going to a good school, your intro to comp sci professors will do a good job of training you how to develop this mindset assuming you put in the effort.
>>10554907Anon do you honestly think it is a worthy career to pursue? I love programming and I already know OOP, however I want to study also hardware. Do you think I should stick with SE?
>>10554907First off, most SE programs will require you to learn C. But to be successful, having looked at programs myself, learn C++ first(it is easier because the compiler does a lot of things for you that C does not). Then after learning C++, learn C. After C, learn Unix programming. Basically you learn about working with a computer that has no screen but that can accept commands(a server).Then learn Unix programming in C. Basically you learn how to build programs that interact with your computer hardware via OS and not just simple programs that display things. Finally you should learn Socket programming via some API. Honestly the path is very straightforward. I think this is pretty much a good chunk of what you will be required to learn at school on the programming aside. Everything not included here is probably theoretic stuff like algorithms processing time(algorithm complexity), common algorithms, discrete mathematics,etc.
>>10554907I am an embedded software engineer who mainly uses C so can answer your question. I like to solve problems by thinking about similar problems I have solved in the past. 90% of the time this is good enough. This is the reason stackoverflow is so popular. The other 10% is new to me, but basically any problem you will ever find has been approached by someone else in the past (unless you are doing a PhD or something) and is probably detailed on the internet somewhere so I just google things.To do C, just pick up a book and start programming. The nuances will come to you later. Also, it is way easier to communicate with the other engineers if you know how to talk/act like a normal person and this is something that is often overlooked in engineering school
>>10556349well, for me I really have no other choice. In general though, software is the future. The language of this century is code. Any career you wish to pursue will be made much easier if you learn to code.
>>10554907>I will be starting software engineering school in JuneThat's fucking retarded.>Also, how do I into C? That's the language we're starting from and I'm having a difficult time learning it.Your school is shit and run by autists if they're not using C++17
>>10554907>How does a software engineer think? They don't. They copy and paste and fuck with shit until it starts kind of working.>What goes on in the mind of a software engineer that attempts to solve a problem? "i dont no wtf im doing, plz halp stack overflow">What's the best way to get a big picture view of a computer language.Hahahaha, virgin.
>>10555937Software engineers don’t really use Sedgewick or Falojet’s work. That’s usually in the hands of TCS people in algorithms and complexity. You really expect your run of the mill software engineer to bust out complex analysis to bound the average case of a graph surgery problem?
>>10555940I heartily recommend this over K&R. The first chapter alone of K&R will put you off if you have no introduction to programming fundamentals. In fact, I only own K&R for the meme of it, I haven't used it once to learn something from.
>>10554907Should I go with CE or SE?
>>10556311I like having a book you mong.
>>10557386Just buy a second-hand copy of the 2ed of C: A Modern Approach. Think of it as an investment as in 6 months it will literally take you from absolute beginner to being a much more competent programmer than the hordes of python and js 'coders'.
>>10557386hey don't call me a mong that's rude
>>10557403Thank you. I'm limping my way through a C class right now. Its my first ever programming language and I have a B in it but I don't even know how! >>10557409No u!
>>10554907You're better off asking /g/
>>10554907Learn how implement sorting algorithms, and build a linked list in C++ and you should make it through second year. Also pretend you like OOP but always remember later that it is a meme
Unironically boot up and play a heavily modded Factorio for 1000 hours and you will become an expert in the abstract concepts behind software design
>>10559419sure but which mods?
>>10554931No they do. Ever heard of computational complexity (relates to algebra) or integrated circuit design (graph theory)?
>>10559477>relates to algebraIf your only comments about complexity theory is that it "relates to algebra" then you know literally nothing about it.Either way, software engineers/developers don't use these. They are in the domain of TCS researchers. They're common topics, but you're kidding me if you claiming mainstream or even any sizable software job makes use of an academic field like complexity theoryt. TCS grad student
>>10559419Yeah which ones?
>>10559419As a backup you can become an I&C technician and make about the same as a software engineer.
>>10554907Learn assembly. If you know assembly you can easily extrapolate to cOther way around obfuscates stuff like pointers and call stacks
>>10554907/g/Also, I read K&R and did most of the problems.https://en.wikipedia.org/wiki/The_C_Programming_LanguageWritten by the person who developed C
>>10560115K&R is too unapproachable for a beginner like me. That K.N. King book looks good.Is C as low level as programmers get nowadays? Has anyone actually programmed something in assembly?
>>10559358why exactly is OOP a meme?