Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming...

22
Ding Yuan Demystifying software

Transcript of Demystifying software - | Electrical & Computer Engineering...ECE 454: Computer Systems Programming...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Final words

22

}  Programming requires practice + practice + practice }  Pay extra more efforts on labs!

}  Don’t be afraid to get your hands dirty!