[ 3 / biz / cgl / ck / diy / fa / ic / jp / lit / sci / vr / vt ] [ index / top / reports ] [ become a patron ] [ status ]
2023-11: Warosu is now out of extended maintenance.

/sci/ - Science & Math


View post   

File: 242 KB, 1800x1200, swe pic.jpg [View same] [iqdb] [saucenao] [google]
10554907 No.10554907 [Reply] [Original]

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.

>> No.10554916

>software engineering
not science or math

>> No.10554920

>>10554916
yes it is

>> No.10554922

>>10554907
Why don't you start by reading the /sci/ wiki, then the sticky?

>> No.10554924

>>10554907
just try stuff until it werks.

>> No.10554931

>>10554920
>yes it is
Software engineers do not use the scientific method.

>> No.10554934

>>10554931
Neither do physicists.

>> No.10554944

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

>> No.10554961

>>10554907
The 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.

>> No.10555897

>>10554961
Learning 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 1
1) not that difficult
2) 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.

>> No.10555937

>>10554931
but sedgewick says algorithm analysis follows the scientific method and sedgewick is smarter than you

>> No.10555940

>>10554907
>how do i into c
c programming: a modern approach newest edition on libgen

>> No.10556038

>>10555940
looks good, thanks

>> No.10556044

This is a good book on c https://www.amazon.com/Expert-Programming-Peter-van-Linden/dp/0131774298

>> No.10556053

>>10556044
thats a good one although it explicitly operates under the assumption that the reader already knows how to program in c

>> No.10556068

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.

>> No.10556081

>>10554907
so basically if you are really serious about c, it goes

programming 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

>> No.10556289

>>10556081
How about the 1st edition on K.N. King? I'm a cheapskate.

>> No.10556311

>>10556289
just get it on libgen you donut

Also 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

>> No.10556321

>>10556289
>pays for books
look at uncle Moneybags over here

>> No.10556338

>>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?

>> No.10556341

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

>> No.10556349

>>10554907
Anon 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?

>> No.10556352

>>10554907
First 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.

>> No.10556363

>>10554907
I 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

>> No.10556677

>>10556349
well, 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.

>> No.10556686

>>10554907
>I will be starting software engineering school in June
That'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

>> No.10556689

>>10554916
fpbp
>>10554920
0/8 b8

>> No.10556698 [DELETED] 

>>10554931
>the scientific method

The only people who ever bring that up are 4th grade science teachers and leldditers. Go learn some actual science.

>> No.10556708

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

>> No.10557326

>>10555937
Software 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?

>> No.10557356

>>10555940
I 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.

>> No.10557371

>>10554907
Should I go with CE or SE?

>> No.10557386

>>10556311
I like having a book you mong.

>> No.10557403

>>10557386
Just 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'.

>> No.10557409
File: 239 KB, 500x514, 1542514147431.png [View same] [iqdb] [saucenao] [google]
10557409

>>10557386
hey don't call me a mong that's rude

>> No.10557499
File: 283 KB, 531x376, a13.png [View same] [iqdb] [saucenao] [google]
10557499

>>10557403
Thank 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!
>>10557409
No u!

>> No.10557937

>>10554907
You're better off asking /g/

>> No.10558726

>>10557371
CE

>> No.10559358

>>10554907
Learn 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

>> No.10559419

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

>> No.10559434

>>10559419
sure but which mods?

>> No.10559477

>>10554931
No they do. Ever heard of computational complexity (relates to algebra) or integrated circuit design (graph theory)?

>> No.10559526

>>10559477
>relates to algebra
If 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 theory

t. TCS grad student

>> No.10559805

>>10559419
Yeah which ones?

>> No.10559838

>>10559419
As a backup you can become an I&C technician and make about the same as a software engineer.

>> No.10560066

>>10554907
Learn assembly.
If you know assembly you can easily extrapolate to c
Other way around obfuscates stuff like pointers and call stacks

>> No.10560115

>>10554907
/g/
Also, I read K&R and did most of the problems.
https://en.wikipedia.org/wiki/The_C_Programming_Language
Written by the person who developed C

>> No.10560922

>>10560115

K&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?

>> No.10560926

>>10559358

why exactly is OOP a meme?