11. Let s create a more human-readable language
and let the computer translate it to numbers
.model
tiny
start:
.386
mov
al,
num1
mov
bl,
num2
.data
add
al,
bl
num1
db
19
mov
sum,
al
num2
db
23
sum
db
?
mov
ah,
4ch
int
21h
.code
org
100h
end
start
13. To make things easier,
we must abstract away from unimportant details
This is why new technologies appear
They allow us to focus on some details
and ignore others
16. Some famous abstractions
Databases
How to ensure efficient and reliable storage?
How to search and edit data conveniently?
Networks
How to make machines collaborate?
How to split difficult tasks among multiple machines?
18. An engineer is concerned with applying scientific
knowledge and ingenuity to develop solutions for
technical, social and economic problems.
Ingenuity — [Wiki] The quality of being clever, original,
and inventive, often in the process of applying ideas to
solve problems or meet challenges.
Code is only an end result.
A good engineering design is comparable to art.
20. Desktop
Software for workstations and laptops
Examples
• Adobe Photoshop
• Microsoft Office
• “Heavy” 3D games
Specifics
• Rich hardware capabilities
• Many applications already have
online alternatives
21. Web
Software accessible over the Internet
Examples
• Facebook
• Wikipedia
• Google Search
Specifics
• Distributed nature
• Many simultaneous users
• Unified access from many devices
22. Mobile
Software for handheld consumer devices
Examples
• Instagram
• Foursquare
• iBooks
Specifics
• Energy-efficiency, limited capabilities
• Sensors: GPS, gyro, accelerometer, ...
• Large family of devices and sizes
23. Embedded
Specialized device-specific integrated software
Examples
• Medical devices
• Airplane “black boxes”
• Security systems
Specifics
• Limited user interaction
• Low-level programming
• Speed and reliability constraints
24. Popular programming languages
(as of Q1 2013)
Java C#
JavaScript Objective-C
C++ Python
PHP Ruby
Functional (Scala, Haskell, Erlang, Lisp family...)
25. Myth #4
Learning the right language
will make you a good professional
Every language is a tool,
know when to use it
27. Types of IT professionals
System Analysts Project Managers
Software Architects Technical Writers
Software Developers System Administrators
QA Engineers Support Engineers
28. Software development lifecycle
Requirement analysis + user experience prototyping
Choice of technology stack & architecture
Design and implementation
Quality assurance and monitoring
Deployment
Maintenance and support iterative