demystifying software - | electrical & computer engineering...ece 454: computer systems...
TRANSCRIPT
![Page 1: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/1.jpg)
Ding Yuan
Demystifying software
![Page 2: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/2.jpg)
What is software?
2
} Anyone?
} Computer programs, or the non-tangible parts of computer
![Page 3: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/3.jpg)
Myth #1: programming is too hard
3
Too many languages: C, Java, Python, .. .. ..
Too many platforms/SDK: Linux, Windows, Eclipse, …
And things are constantly changing!
I didn’t start programming when I was 10…
![Page 4: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/4.jpg)
Truth
4
} Is programming hard? } Yes, but much easier (and fun) to well-trained programmers } Essential skillsets
} Logical thinking } Algorithms and data-structures } Understanding of system software and hardware } Know how to type…
} Experience matters? } Yes, it matters
} But solid understanding of principles + guided practice matter more
} And it’s not late at all!
![Page 5: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/5.jpg)
Truth
5
} Too many languages? } Key principle remain the same
} Especially if you understand compiler
} Too many platforms? } Again, key principles remain the same
} Keeps changing? } Things only change on the surface } Fundamental principles remain the same
} Example: cloud computing, caching
} “There is nothing new under the sun”
![Page 6: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/6.jpg)
Myth #2: programming is NOT a sustainable career - so I lose my job when I am over 40
6
![Page 7: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/7.jpg)
Truth
7
} Experience + solid foundation = invaluableness
![Page 8: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/8.jpg)
Myth #3: programming is too easy - so a caveman can do it
8
![Page 9: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/9.jpg)
9
![Page 10: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/10.jpg)
Truth
10
} Hard to make it right } How to make them crash less? } How to reduce the downtime by half?
} Talk to me if you’re interested!
} Hard to make it fast } Hard to make it scale
} A facebook.com with 100 users is very different from one with 500 million users
} Require you to understand the fundamental principles!
![Page 11: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/11.jpg)
Myth #4: if I am not interested in software, I don’t need to study programming
11
![Page 12: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/12.jpg)
Truth
12
} Programming skill is needed in many other fields } Even if you’re into hardware design! } Even your car is running on software! } Software Defined Network (SDN)
![Page 13: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/13.jpg)
So will studying software lead me to a promising career?
13
![Page 14: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/14.jpg)
![Page 15: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/15.jpg)
Software engineer is one of the best jobs
15
} FORTUNE 100 best companies to work for } #1: Google (software) } #2: SAS (software) } #6: NetApp (software) } #9: Ultimate Software (software) } 4 in top ten!
} Software engineer is the #3 ranked best job } Highly-paid } Flexibility } Less-stressful
![Page 16: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/16.jpg)
Many research positions in Academia
16
} Software research is relevant
![Page 17: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/17.jpg)
How do I become a great programmer (or, what courses should I take?)
17
![Page 18: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/18.jpg)
Must-have knowledge for any programmers
18
} ECE 243: Computer Organization } Hardware basics
} ECE 244: Programming Fundamentals } C/C++: programming language for serious
programmers (and a more difficult one)
} ECE 345: Algorithms & Data Structures } Basic understanding of how to make your
program work } Basic analysis of your program’s
performance/efficiency
![Page 19: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/19.jpg)
Becoming a great programmer
19
} ECE 344: Operating System } “The code that programmers do not have to write” } Foundation to all other programs } Hardest programs to write
} Also the likely the hardest lab assignments ever } Highly rewarding
} ECE 467: Compilers & Interpreters Programmer
int main (int x){ return x + 5; } …
Compiler 1010010010 0101101010 1010010100 1010001010 …
Machine Instructions
![Page 20: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/20.jpg)
Becoming a programming guru
20
} ECE 454: Computer Systems Programming } How to make your program fast } How to write the fastest program for the underlying OS,
compiler, and hardware
} ECE 540: Optimizing Compilers } Advanced topics on how compilers make your program fast
} ECE 552: Computer Architecture } Advanced topics on how CPU make your program fast
![Page 21: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/21.jpg)
Expertise in a specific area
21
} ECE 419: Distributed Systems } Make your program run in parallel might not be as easy as you think
} ECE 468: Computer Security } Hackers? Hackers!
} ECE 444/450: Software Engineering } How to manage a large software project
} CSC 343: Databases } How to store and analyze large amount of data
![Page 22: Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming ! How to make your program fast ! How to write the fastest program for the underlying](https://reader033.vdocuments.us/reader033/viewer/2022053121/60a6e091205e4e03a340e2ff/html5/thumbnails/22.jpg)
Final words
22
} Programming requires practice + practice + practice } Pay extra more efforts on labs!
} Don’t be afraid to get your hands dirty!