SlideShare a Scribd company logo
Your Guide to be a
Software Engineer
How to start software engineering in a good way
Many of us want to be a programmer, but they don’t
know How? or where to Start? And what to Learn?
And even what are the resources for learning?
Here you will find all the answers to your Questions
Ahmed Mater
Introduction to Programming
“Everybody in this country should learn how to program a computer
because it teaches you how to think” Steve Jobs 1955-2011
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
The Content of the Speech:
1. What is Programming?
2. What is the language of the Computer?
3. The Different types of Computer Languages:
1. Programming Languages
2. Markup languages
3. Style Sheets
4. Scripting Languages
5. Query Languages
6. Data Exchanging Languages
4. Types of the Programming Languages:
1. Machine Language
2. Assembly Language
3. Low-Level Languages
4. High-Level Languages
5. The Main Majors of Programming:
1. Desktop Applications
2. Web Development
3. Mobile Applications
4. Game Programming
5. System Programming
6. Structured vs Object-Oriented Programming:
7. How to Learn Software Programming:
1. The English Language
2. Watching Courses
3. Reading Books and References
4. Which One to start with? (Courses or Books)
5. The Communities Websites
6. The Tutorial Websites
7. The Language Documentation
8. Getting Experience from the Experts and Professionals
9. The Online Judge and Problem Solving
10. Finally Where to start? What to learn first?
8. How to write a Code for a Program?
1. Defining the Problem
2. Planning the Problem
3. Coding the Program
4. Testing the Program
5. Documenting the Code
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
9. What to focus on when you start learning software?
1. Perform the functionality
2. How to write a Readable Source Code
3. How to use the Debugger tool
4. The Algorithm of the Code
5. How to use Libraries in your code
10. The Academic Courses in College
1. Visual Basic
2. C Language Programming
3. C++ or Java Programming
4. Mathematics
5. Electronics
6. Digital Logic Design
7. Computer Organization and Architecture
8. Algorithms
9. Data Structure
10. Operating Systems
11. Computer Networks
12. Artificial Intelligence
13. Databases
14. Digital Control Systems
11. The Main Topics you can find in any Programming Language:
1. The Basics of the Language:
2. The Object-Oriented Programming:
3. I/O files (Binary or Text)
4. Collections, Generics and Data Structures
5. Database Connection
6. Server-Side Programming & Web Services
7. Multi-Threading and Parallel Programming
8. Handling Exceptions
9. Graphical User Interface (GUI)
10.Graphic Design (2D)
12. The Recommended Courses and Books
13. The Recommended Professionals
14. My Contacts (if you need any advice, Don’t hesitate to ask)
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
1. So what is Programming?
Programming is all about a problem in our life and we think about a way to solve it.
But in an academic perspective it’s about some steps which we call instructions to solve the problem.
Ex: How to go from here to the gas station:
1. Go ahead in this road for 1m
2. Take the first turn to the left
3. Then go straight and pass the first two turns
4. And take the third turn to the right
5. Finally you will find the gas station in the front
These steps are called an Algorithm to solve the problem and we will talk about it later on in the
part of the Academic Subjects, but we can notice here that this algorithm is written in our native
language which may be English or Arabic, but can the computer understand our language?
Of course Not!!!! Which lead us to another question.
2. What is the language of the Computer?
Computer actually can understand only 2 numbers which we call them the Binary Digits (bits)
and this Language is called the Machine Language, but there are more other Types of Languages that
the computer can understand which are more advanced than the 0s and 1s.
3. So what are the Different types of Computer Languages?
1) Programming Languages: They are the Languages that talk to the computer directly
either on the Hardware level directly such as (Machine Language and Assembly) or on the
Software Level (Operating System) such as (COBOL, PASCAL, C, C++, Java, Python and
C#)
2) Markup languages: They are concerned with the structure of the Web pages, as telling the
web browser how to display the Webpages (Ex: they specify the Headers, Paragraphs,
Images and more other things in the web page to the browser), and also you have to know
that the HTML is the Markup Language for the web pages, but the XML is used to structure
Applications such as those developed in C# and in Java for Android (Ex: It says that there is
a button here and a text box there and so on)
 HyperText Markup Language (HTML and XHTML and HTML5)
 eXtensible Markup Language (XML)
3) Style Sheets: It is concerned with the beauty of the website which says (Ex: This Header
will be in this font, that font size and this color and so on), (another Ex: This border will be
with a specific thickness and has a margin of this value and so on), also you may notice that
some buttons change when you move your mouse over them this is also done by the Style
Sheets.
Both of the Markup and Style-Sheets are called Front-End of a Website.
 Cascading Style Sheets (CSS & CSS3)
4) Scripting Languages: Those are the Languages of the servers, they are used to give
functionalities for the websites (Ex: comparing the username and password entered in a
website with the database and reply to the user), this is called a Server-Side Programming
at the Back-End of the Website.
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
But the JavaScript is a little bit different than the other as it runs on the Web Browser not a
Server and it’s used to give life to the Web pages and make it more interactive with the user
by making the HTML more Dynamic to be called DHTML.
Do more things which you can notice when you search in google and you see the results
before clicking on the search button this is called the AJAX where the JavaScript
communicate with the Server and retrieve the results from the database and display them at
the same time.
Now the JavaScript has ready Libraries that you can use directly without rewriting them from
scratch such as JQuery.
 PHP Hypertext Preprocessor (PHP)
 Ruby on Rails
 Python
 JavaScript and JQuery
1. Document Object Model (DOM)
2. Asynchronous JavaScript and XML (AJAX)
5) Query Languages: They are the languages associated with the Database which are used
for dealing with databases by inserting or retrieving or delete or update the data.
 Structured Query Language (SQL)
 Procedural Language/Structured Query Language (PL/SQL)
 XQuery and XPath (They are related to the XML)
6) Data Exchanging Languages: They are languages used to send data over the internet in
a form a structured message for example: (for the message in JSON, the data are values
associated with keys { key : value }), unlike (for the message in XML, where data is between
Tags <Tag> Data </Tag>)
 JavaScript Object Notation (JSON)
 eXtensible Markup Language (XML)
4. The Programming Languages:
1) Machine Language: This is the very basic language that the computer can understand or
to be more precise is what any machine or hardware can understand.
It consists of 2 digits (0 and 1) which are the representation of switching on and off a
transistor or an electronic switch in a Logic circuit, it’s a very complicated language and used
only for the Digital Logic Design.
ex: to add 2 numbers the instruction may be (0100 00 0010 1100)
2) Assembly Language: This language is more developed than the Machine Language as it
uses English words as codes instead of numbers to perform the operations such as (STO:
Store in Memory) (ADD: to add numbers) and more others. This is easier than using (1s and
0s) to write a program.
ex: to add 2 numbers which are 5 and 6 then print the result
STO R0 5 R0 is a Register (Temporary storage)
ADD R0 6
PRT R0
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
3) Low-Level Languages: They are languages which are more developed than the
Assembly and the Machine Language, they use also the English words for instructions
(Ex: printf(): to o/p on the console) and symbols for operations (Ex: 3+2).
It’s simpler than Assembly, as some operations may need several lines of Codes in
Assembly which can be executed in only one statement in C Language.
Ex: to add 2 numbers, 5 and 6 then print the result ( printf(“%d”, (2+5) ); )
4) High-Level Languages: These are the most advanced Languages of them at all, they
support what is known as OOP (Object Oriented Programming) - and we’ll talk about it later-,
these languages can perform more advanced tasks like Network Development, Designing an
Application with GUI (Graphical User Interface), Database Management and report
generation and more other advanced stuff.
Examples of these Languages are Java, Python, C# and more other.
We have to know that The Machine Language is closer to the Hardware of the Computer and as
we go higher from the Assembly to the Low-Level to the High-Level the more we get far from the
Hardware.
And also the more we got far from the Hardware the more advanced stuff we can perform and
the slower the program will be. (For example: the program developed in C is hard to be coded but
faster than the program coded in java).
5. What are the Majors of Programming?
1) Desktop Applications: In which the programmer develops an application to run on a
desktop computer without using the internet like (MS Word or Notepad or AutoCAD), may be
application for small business such as an Accounting Application for a Mall, and this could be
accomplished by high-level Language such as: Java or C# or Python with the help of a
Database (if needed) such as MySQL or SQL Server or any other DB.
2) Web Development: In which the programmer develops an application to run on a server
so as a user, I will need access to the internet so I can use it, also to design a Web site with
many pages and services, and this could be accomplished using a Markup Language such
as HTML and Style Sheets such as CSS and a Scripting Language such as PHP or
JavaScript or may be a Programming Language such as Java or C# or Python, also with a
Database Management System (if needed) such as MySQL or PostgreSQL
3) Mobile Applications: In which the programmer develops an application to run on a mobile
platform (such as Android or Windows Phone or iOS) and devices such as Tablets or TVs.
But For each platform we use different Language and a different IDE
For Android you can use Java as a Language and Android Studio as an IDE
For Windows Phone you can use C# as a Language and MS Visual Studio as an IDE
For iOS you can use Objective-C or Swift as a Language and Xcode or Cocoa as an IDE.
4) Game Programming: In which the programmer develops Games and Graphical animated
applications, this major may be one of the difficult majors as it need to develop in a low-level
languages such as C++ as it runs faster and more efficient, it also require a high degree of
technical proficiency, (but trust me it’s fun to develop games)
You can also develop games using Java or Python and Web Games using HTML5 and JavaScript,
but the efficient games are developed in C++.
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
5) System Programming: In which the programmer write codes in a low-level language that
will run on a piece of hardware (such as: programming a Micro-Processor to perform a
specific task) so it need to be fast and efficient.
Also for a big project we could call it an Operating System of the Hardware
The most common used Language in this Major are C++ and C Languages
6. Structured vs Object-Oriented Programming:
During your career in programming you will encounter these two terms and you have to know
the difference between them:
1) Structured Programming: This is an old approach used in the Low-Level Languages
such as C & COBOL, this approach focuses on the process and the functionality more than
the Data, as you will see that the application programmed in C is a set of blocks of codes
called functions and there is one main block called main() function that uses the other blocks.
2) Object-Oriented Programming: this is a new programming approach used in the High-
Level Languages such as C++, C#, Python, Java, and this approach focuses on the Data
and the functionalities that works on this data, and encapsulate them in one container called
Class, so the application programmed in Java will be a set of Classes each one of them is
concerned with a specific topic, (Ex: Database Class that will deal with the database for the
insertion and retrieval of data) another (Ex: Networking Class that will deal with the data
from a web site or sending data to a server) and so on.
7. How to Learn Software Programming?
Before anything, we have to know that the Computer Science Major is one of the hardest Majors
in the working careers, but on the other hand It’s considered one of the highest and well-paid
compared to other careers, and this because The CS Major is developing every day and more
technologies are introduced, and the more technologies you learn, the more you will get paid for
your career, and beside the Money if you are interested in puzzles and solving problems, then you
are in the right place and I wish you good luck in the Future.
Now you will know how to learn through some Points and I will recommend some good websites
and YouTube Channels for you:
1) The English Language: We all know that the Computer and the Computer Languages are
developed by the EU and US scientists so most of the good resources to study Computer
Science are in English Language, so My first advice is to start learning English that will help
you watch efficient courses and read good books and also you can share on the discussions
on the programming sites, understand them and benefit from their knowledge.
 Recommended resources:
1. EngVid – YouTube Channel: http://bit.ly/1IyDSRl
2. English Grammar - Al Darayn Academy : http://bit.ly/1Kqziaf
3. English Beginner - Al Darayn Academy : http://bit.ly/1Di0SqW
4. Mr Ehab Ramzy: http://on.fb.me/1JkbgPy
5. Mr Abdullah Amer: http://on.fb.me/1IoppGl
6. Ahmed Mater – How to learn English: http://on.fb.me/1N5SpYv
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
2) Watching Courses: You will notice that the instructor in the course will focus on how to
work on the IDE (the program for writing the code) and will teach you the main and most
used statements of Codes, and he will focus on the working and practical side.
3) Reading Books and References: The writer of the book will teach you every single
information about the topic even if they are additional or rarely used and to be good in any
CS major you have to read books or at least have a reference so you can revise it when you
need, This will lead us to the next Question?
4) Which One to start with? (Courses or Books)
We have to know that in our learning journey, we will definitely need both the courses
and books to improve our skills and learn more technologies and languages.
but as a Start and if you are beginner or know nothing about programming, then you have to
focus on learning through courses as they will be easy for you at the beginning and will focus
on the important topics and practicing on the IDE.
And after one or two courses you have to go for additional information through books.
and One of the most good benefits of the books are that they will make you Open-minded
and think in different ways and face more problems and some books introduce case studies
from the real life.
5) The Communities Websites: As we mentioned before that reading is one of the main
methods to learn, another resource is the community Websites that offer discussions about
programming and the problems facing the juniors.
So how this websites works? And how you can benefit from them?
 Every one of us will face many problems during his career of programming and also
will have questions that he can’t find their answers in Courses or Books.
 Now there are websites that offer a very helpful service in which you can post your
question and there are some other experts in the field will see your question and
answer it, and you will try the answers given and for the correct answer you will
confirm it.
 These Websites offer their services for free and there is great number of experts and
professionals devoting their time to see the questions and answering them and the
websites organize everything and mark the questions if they have been answered or
still not answered, so people can easily search through the Website.
 Now for you as a beginner in the field when you face any problem try to search for the
answers on these websites and read about every one’s experience and the answers
and try the solutions, and when you become an expert don’t forget to help the juniors.
 Recommended Websites:
1. Stack Over Flow: http://bit.ly/1H6BvGw
2. Reddit : http://bit.ly/1Kx8cSB
3. Code Project: http://bit.ly/1Kx8nxl
4. Site Point: http://bit.ly/1Kx8qsV
5. DZone: http://bit.ly/1Kx8Ak5
6. Bytes: http://bit.ly/1Kx8ARa
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
6) The Tutorial Websites: These are more like the books but they are a little simpler, these
websites offer you a simple written tutorials with some code samples and some written
illustration of the Language topics.
As you are going to be a programmer you don’t have to remember everything, on the other
hand you need to have more other resources some may be big references for big issues and
big problems which are Books and other simple resources for fast remembering a simple
information, and these Tutorial Websites comes in handy for that.
 Recommended Websites:
1. Tutorials Point: http://bit.ly/1IXph0Y
2. C plus plus: http://bit.ly/1UmeI0m
3. C Programming: http://bit.ly/1G0xVKi
4. Mozilla MDN: http://mzl.la/1ggGbRr
5. W3SchoolCode Project: http://bit.ly/1G0xVKj
7) The Language Documentation: For every Computer Language you will find an official
website where you can find the Libraries of the language and the different versions and the
most of them that you have to focus on is the Documentation of the Language, and if you
don’t know what the documentation is? Well here is the answer, it’s the syntax of the
language including the functions and classes (if it’s an OOP language), and for every class
and function you find a simple description of what does the function do? And what is its
inputs and its output? And more other helpful information.
These are called the Libraries and the descriptions are called the Documentation.
 Recommended Websites:
1. Python Documentation: http://bit.ly/1Kx9ltr
2. Java Documentation: https://docs.oracle.com/javase/7/docs/api/
3. C# Documentation: http://bit.ly/1Kx9Tj6
8) Getting Experience from the Experts: in your career you will meet many other people
who have more experience than you in the field, and my advice to you is to ask them and
gain as much experience as you can from them, also try to see how they start their career
and how they got their experience, also try to see their codes - if they are open source and
available to you - and try to simulate them and see how they write and how they think.
 In our field don’t be shy, if you are stuck in a middle of something try to search for a
solution - especially in the Community Websites - and if you don’t get your answer, ask
others who have more experience and show them what you have got from searching
and they will sure help you and show you what is missing.
 Another advice don’t depend on other to solve your problems and write your codes, or
you will end up know nothing, you will have codes that aren’t yours and you couldn’t
even write them again on your own.
 Searching for a solution of a problem will help you see different thinking ways of
different peoples and this will enhance your thinking skills, and your experience will
increase, unlike other people who don’t search before asking, they got only one
answer and in an easy way, and believe me the easy you got the answer the faster
you will forget it, So Search for the information if you want to be good in your field.
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
9) The Online Judge and Problem Solving: There are many websites that offer too many
problems for you so you can think about the solutions, practice and apply what you have
learned before, and the problems are categorized and there are highly advanced problems
so you can practice the algorithms you have learned too.
 Recommended Websites:
1. Code forces : http://bit.ly/1KxasJA
2. Hacker Rank: http://bit.ly/1KxaDVt
3. A2oj: http://bit.ly/1KxayAV
4. Timus Online Judge: http://acm.timus.ru/
5. UVA Online Judge: http://bit.ly/1KxaPnD
10) So Where to start? and What to learn first?
We have spoken before about the majors of the Programming and Software, and you
have to choose one of these majors to work on and continue your career, but the most of us
don’t know much about the major and want to take some time to choose the major.
But at the same time you don’t have to take so long in thinking and don’t waste your time
during thinking, and my advice is to start learning English with a general programming course
to learn the initial codes and take a general look on the programming language.
 Recommended Courses:
1. Lynda - Foundation of Programming: Fundamentals: http://bit.ly/1zIQSol
2. Dr. Ahmed Mohamed El Said - C++ Programming: http://bit.ly/1zGy8kR
3. NU – Islamabad – CS201 Introduction to Programming: http://bit.ly/1TLtv53
8. How to write a Code of a Program?
When you have a problem and you want to make an application to solve this problem then
you have to follow these 5 main steps in order to make a good application
1) Defining the Problem: Ask yourself what is the problem? (May be searching for a solution
to a Mathematical Equations) and try to perform step (b) which is planning this problem, but if
it’s difficult to be planned, you can break it into smaller problems and solve every problem
alone, and this technique is called Divide-and-Conquer.
2) Planning the Problem: This may be done by either two ways
(Drawing a Flow-Chart): which is a set of shapes (circles, squares, … so on) which
represent the flow of the program step by step, or
(Writing a Pseudocode): which is writing the steps that the computer has to follow in order to
perform the task and they are written in any Natural Language (English or Arabic).
3) Coding the Program: This is about transforming the simple sentences of the pseudocode
into instructions in any programming Language.
4) Testing the Program: After coding the program you have to try it and see the result, most
of the programs don’t give correct results from the first time so you have to see where is the
problem? and try to fix it out.
5) Documenting the Program: it’s about writing a detailed description about the project, and
it may include the comments in the code, also the Flow-Chart and the Pseudocode of the
Program, and this is an important step in programming procedure as it helps the programmer
to remember everything about the project in the future.
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
9. What to focus on when you start learning
1) Perform the functionality: You have to practice on solving problems and try as many as
you can while learning, also try to code these solutions and you have to know that each
problem may have many possible solutions, some of them are better than the other, so you
can try to solve it and improve your solution in the future.
2) How to write a Readable Source Code: After some time of learning how to program
and get used to face many problems and solve them, try to simulate the codes of the
professionals (Ex: in the naming of variables and the arrangement of the code), this is very
important specially for the big companies where you have to work on a project with many
engineers and coders and you don’t have to explain everything in code for them because
there are conventions and standards all of them follow so they can easily understand each
other.
3) How to use the Debugger tool: When you code a problem you will face some errors
(logical errors), and those are hard to find especially if you have an infinite loop in your
program, so there are some tools that can help you to follow the execution of your application
and in every step you can see the values of the variables and you can find the step where the
code fails and solve it, this tool is called The Debugger, and you must learn it.
4) The Algorithm of the Code: As I said in the first point, we have to face many problems
and try to solve them, and each problem may have many solutions and some of them are
better than the other and you have to try solving with the better solution.
The Algorithm of the code means the steps to solve the problems. You have to know that
there are some famous problems that have a good solutions (Ex: finding the shortest path in
a map) this can be accomplished through many algorithms and each of them has its own
properties, so you have to study algorithms and make good use of it in your project
5) How to use Libraries in your code: Now the programming languages offers you a ready
codes to use instead of writing from scratch, and this codes are already enhanced, safe and
faster in execution and with them you can accomplish more things and highly advanced
things.
10. The Academic Courses in College:
You will spend 4 or 5 years in your college either you are a Computer and Informatics student or
Engineering student and during this time you will study some practical subjects and other are more
academic than practical, so you have to know how to make good use of each subject and how to
enhance your skills during your time of study in the college.
Another point, may be some of you think that the study in college is humble and the subjects are
very simple and naïve compared to what you will work with in a company, but you have to know that
it’s not that bad and my advice to you is to have your resources to study from and be step-ahead
from the college and try to improve yourself through Courses and Books.
Finally and since I’m in Engineering College, I will talk about the subjects we study in the Computer
and Systems Dept. :
1) Visual Basic: This subject will introduce you to the programming and will focus on the GUI
of the program and a little about the functionality, this may be a good start but it’s not
practical at all, and not used in any company, it’s just for academics and to do simple stuff.
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
2) C Programming: It’s a practical subject where you will have your true first steps in
programming in the college, and whatever your major is, The C Language will benefit you of
course, It will focus on the basics of the programming.
 Recommended Courses:
1. The New Boston – C Language: http://bit.ly/1IoLNR2
2. Learning Lad – C Language: http://bit.ly/1K1qoUc
3. Dr. Ahmed Sallam – C Language: http://bit.ly/1K1qoUc
 Recommended Books:
1. C – The Complete Reference: http://amzn.to/1TLo5an
2. C – Primer Plus : http://amzn.to/1TLpptV
3. Head first C: http://amzn.to/1TLpkGm
3) C++ or Java Programming: They are very practical subjects that you will use in your
work at a company for sure (may be C++ isn’t widely used, unlike Java), This subject will
revise the basics you have studied in C (better for you to revise them on your own) and will
continue in the Object-Oriented Programming where you will study the classes,
encapsulations, Inheritance, and may be Polymorphism and some other advanced stuff.
 Recommended C++ Courses:
1. Dr. Ahmed Mohamed El Said - C++ Programming: http://bit.ly/1zGy8kR
2. Eng. Mostafa Saad - C++ Programming: http://bit.ly/1P7eV7O
3. The New Boston - C++ Programming: http://bit.ly/1IoMU3g
4. The New Boston - C++ GUI with Qt: http://bit.ly/1IoMpWW
5. Learning Lad - C++ Course: http://bit.ly/1K1qP0S
 Recommended Java Courses:
1. Lynda - Java Essential Training: http://bit.ly/1bzea56
2. Lynda - Java Advanced Training: http://bit.ly/1JThqqH
3. The New Boston - Java Beginner: http://bit.ly/1IoMU3g
4. The New Boston - Java Intermediate: http://bit.ly/1IoMpWW
5. Eng Ahmed Helal - J2SE: http://bit.ly/1KxfuGd
6. Eng Mohamed Essa - Java Programming: http://bit.ly/1JJ7Tnx
 Recommended Books:
1. C++ – The Complete Reference: http://amzn.to/1TLo9XI
2. C++ Primer Plus: http://amzn.to/1TLovgS
3. The C++ Programming Language: http://amzn.to/1TLos4I
4. Java The Complete Reference: http://amzn.to/1TLoCcp
5. Thinking in Java: http://amzn.to/1TLoMQO
6. Head first Java: http://amzn.to/1TLoFoz
4) Mathematics: During your 5 years in the college of Engineering, you will study Math, and
mayn’t be all the problems are solved by Math, but Studying Math enhances your thinking
skills and some of the solutions can but enhanced by Mathematics, so don’t ignore it.
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
5) Electronics: As an Electric Engineer, you will study Electric Circuit and Electronics, each in
a separate subject but for a software engineer you have to learn electronics which is the main
ingredient of the Computer Hardware, and this will help you in many ways first, you will learn
how the computer works and how this hardware work, second it will help you to understand
How the Embedded Systems work and will pave the road to The Digital Logic Design.
The Main Components you will study are (Diode and Transistors)
6) Digital Logic Design: This may be one of the interesting subjects you will study, and you
will learn many things about how the machines work. Also you will learn more about the
Machine Language and what does the 1s and 0s actually mean and how these 2 numbers
can do different things. You will also learn how to design Logic Circuits, but they will be on
paper not practical, so my advice to you is to try and buy some components and try to
connect them and apply what you have learn in action, Trust me it’ll be more interesting than
what do you think.
 Recommended Courses and Books:
1. NPTEL – Digital Circuit & Systems Design: http://bit.ly/1TLq3Yc
2. NU – Islamabad - CS 302 – Digital Logic Design: http://bit.ly/1TLquBU
3. Digital Design Principles and Practices : http://amzn.to/1TLruG1
7) Computer Organization and Architecture: This is one of the most important subjects
that you will study in the college, you will learn how the computer works as a total system,
you will study the CPU, ALU, Main Memory, Cache, I/O Devices, and more other things, you
won’t just learn how they work, but you will study them in detail and you will also study some
codes in the Assembly Language and how it can be executed by the Processor.
This subject is very very important if you are going to work in the field of the Embedded
Systems as you will learn how to design a system and how the components will work
together, and if you are going to work as a pure software it will be good to know how the
computer works in detail.
 Recommended Courses and Books:
1. Dr Ahmed Sallam – Old x86 Assembly Language: http://bit.ly/1NerEOB
2. Dr Ahmed Sallam –x86 Assembly Language: http://bit.ly/1NerI0O
3. NU – Islamabad – CS401 - Computer Arch. and Assembly: http://bit.ly/1TLrW7h
4. NPTEL - Computer Organization: http://bit.ly/1KviIJS
5. Bilkent University - CS-224 Computer Organization : http://bit.ly/1KviQsS
6. Coursera - Computer Architecture: http://bit.ly/1Kvk4V5
7. Computer Organization and Architecture William Stallings: http://amzn.to/1TLsslG
8) Algorithms: This is one of the interesting subjects you will study in college, but let me tell
you more about Algorithms and what it is about? First the word Algorithm is named after the
Arabic scientist Muhammad ibn Musa al-Khwarizmi the greatest mathematician who
founded the science of Algebra, and while he was working on Algebra, he noticed that there
are some problems can be solved by some constant steps, so he worked on collecting every
problem and its own set of steps to solve it, and by the time when the science of
programming is founded, each set of the steps to solve a problem in programming is called
an Algorithm for that problem, there can be more than one algorithm for each problem.
In this subject, you will learn how to study the Algorithm and How to specify which algorithm
is faster, which is consuming more memory storage and this comparison will help you specify
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
which algorithm is suitable for your application.
You will also study many algorithms to solve some problems (such as Sorting, Searching,
Compression, and more other problems) and notice that each of these problems can be
solved by several algorithms and each has its own properties.
 Recommended Courses and Books:
1. NU – Islamabad – CS502 - Fundamentals of Algorithms: http://bit.ly/1TLrYvO
2. Coursera - Algorithms: Design and Analysis, Part 1 : http://bit.ly/1fYY1HW
3. Coursera - Algorithms: Design and Analysis, Part 2 : http://bit.ly/1fYY72h
4. Data Structure and Algorithms in Java: http://amzn.to/1TLtcam
5. Introduction to Algorithms: http://amzn.to/1TLtiyY
9) Data Structure: Sometimes it’s attached to the Algorithm, but it’s a different subject. This
Subject is about how you can manipulate data in Memory or Database, you will study
different ways to store and retrieve data, and other functions to manipulate Data (Ex: The
Stack DS which works with FILO – where the first element enters an array will be the last to
be retrieved) (another Ex: The Queue DS which works with FIFO – where the first element
enters the array will be the first element to be retrieved) and more other Data Structures, and
you will study each one and its properties and how they work so you can choose a suitable
one for your project.
 Recommended Courses and Books:
1. NU – Islamabad – CS301 Data Structures: http://bit.ly/1TLs9aD
2. UC Berkeley - CS61B - Data Structures: http://bit.ly/1TLxNJC
3. Data Structure and Algorithms in Java: http://amzn.to/1TLtcam
10) Operating Systems: It’s one of the important subjects, where you will study how the
computer hardware executes the applications and what is going on behind the scene when
you for example double click on a program on your desktop, you will also learn about some
important terms such as Threads, Parallel execution of programs, Client-Server
communications and How the I/O devices works.
The OS is considered the interface between the Hardware and the User so you will learn
what your simple clicks do inside the Hardware and you How the OS manages all the
programs running and How the Processor executing them.
This subject is associated with the Computer Organization as OS manages the working of
the hardware and introduce it to the user in a friendly manner, and it’s very important to
understand the Operating Systems if you want to design large Embedded System that will
perform many tasks.
 Recommended Courses and Books:
1. NU - Islamabad - Operating Systems: http://bit.ly/1TLs06X
2. Operating Systems by P.K.Biswas Sir: http://bit.ly/1KvjXZF
3. Dr Ahmed Sallam - Old Operating Systems: http://bit.ly/1NerDtZ
4. Dr Ahmed Sallam - Operating Systems: http://bit.ly/1NerDdw
5. Operating System Concepts: http://amzn.to/1TLxVJ8
11) Computer Networks: Another interesting subject where you will study what is the internet
and how it works? Also you will understand how the data are transmitted over the internet,
and how can two applications communicate with each other, and you will study some devices
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
such as: Routers, Switches, Bridges and Hubs, and how the networks are constructed, and
many other interesting things.
This Subject is considered the basics of the IT Major in Computer Science, and if you are
going to do programming for a Client-Server programming then you have to understand How
the network works? And how the data are transferred through the network?
It’s also very helpful in the field of the Internet of Things (IoT).
 Recommended Courses and Books:
1. Coursera – Computer Networks: http://bit.ly/1TLxYoi
2. NTPEL – Computer Networks: http://bit.ly/1TLy3IR
3. Computer Networking – Top-Down Approach: http://amzn.to/1TLy7YR
12) Artificial Intelligence: This is the subject of those who want to work in the Robotics field,
where you will learn more and more algorithms that you can use to develop an intelligent
Robots, Algorithms for Searching, Solving Problems, Genetic Algorithms.
The field of the AI (Artificial Intelligence) is vast and huge and what you will learn in this
subject is an introduction, so if you are interested you have to continue in more advanced AI
fields such as: Machine Learning, (NLP) Natural Language Processing, Computer
Vision, (ANN) Artificial Neural Networks and more other.
 Recommended Courses and Books:
1. Dr Ahmed Sallam – Introduction to Artificial Intelligence: http://bit.ly/1NerBlN
2. Udacity – Introduction to Artificial Intelligence: http://bit.ly/1TLyjYm
3. Artificial Intelligence A Modern Approach: http://amzn.to/1TLyliH
13) Databases: It’s one of the important subjects, and from its name it’s concerned with the
Databases, and you will study the different types of Databases and how to design a database
and how to connect the tables together, also you will study the SQL Language which is used
to make queries from the database to store data in or retrieve data from the database, so it’s
very important to study this subject especially if you are working on a project in which you will
need a database, and even if you aren’t working on a project, try to practice on one, while
studying this subject.
 Recommended Courses and Books:
1. NU – Islamabad – CS403 - Database Management Systems: http://bit.ly/1TLs3Q4
2. Lynda – Foundation of Programming – Databases: http://bit.ly/1H5XDAH
3. Head First SQL: http://amzn.to/1TLytPk
4. Beginning Database Design: http://amzn.to/1TLzaYQ
14) Digital Control Systems: this subject may be more Hardware than being a Software but it
has a software implementation, In the Digital Control Systems, you will study the types of the
controllers and systems and how to design a controller to control this system, and these
systems may be such as controlling an Air Conditioning to be constant on a specific
Temperature, or controlling a Water-level in a Tank, and more other systems, you can notice
that they are hardware (Controlling Motors or pumps and so on), so where is the software?
The answer is in the controller which will have a Micro-Controller programmed to control the
system at different states.
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
11.The Main Topics you can find in any Programming Language:
1) The Basics of the Language: this is the part of the basics where you will study the types
of variables and Data Types and how to make loops and Decisions and how to create
functions from the codes to reuse them again several times.
2) The Object-Oriented Programming: we talked before about the OOP, so in this section
you expect to study the attributes and Methods and how to build a class also you will learn
about the inheritance between classes and the polymorphism which is the class takes many
forms
3) I/O (Binary or Text): this section is about the streams and data and how to read from and
write to the files either they are text or other types such as sound, video and so on.
4) Generics, Collections and Data Structures: this section is about the data structure
where every language has its own Libraries of these Data Structures and you will just use
them directly.
5) Database Connection: you will study here how to connect your code with a database and
how to store and retrieve data in the Database through your program.
6) Server-Side Programming & Web Services: you will study here how to code an
application to run on a server and how to connect you application with another one on a
server and how to communicate through the network, also how to build a web service that
can be called by the application in the future.
7) Multi-Threading and Parallel Programming: you will study in this section how to divide
your application into separate parts so they can run together in parallel which decreases the
executing time of the application and makes it more faster
8) Handling Exceptions: the good applications are those that don’t crash at any error
happens, so you will study here the different types of errors (Exceptions) and how to handle
them to keep the application stable.
9) Graphical User Interface (GUI): in this part you will learn how to design a friendly user
interface such as Button, Textboxes, and Select lists and so on. And how to code the
functionality of the buttons and the other components
10)Graphic Design (2D): you will study here how to draw using the programming language so
you do some graphs in the Applications or developing applications with graphics such as
developing games.
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
12.The Recommended Courses and Books:
First there is something I want to talk about: Many of you when they see many links for courses
or many books introduced they got disappointed and think that it’s a big deal and they can’t handle
it, so I want to say this, When I give many links courses for different people I just wanna introduce
different styles of learning and writers for books, but for you as a student you will end up with only
one course or a book that you prefer and get comfortable with his style.
This is because some people prefer the detailed explaining and the many examples and some
others prefer the fast information and the abstract one, and they practice by themselves.
So you just take a look on the courses and the books, choose the best one of them for you and then
watch the course or read the book.
1) The PHP Language:
 PHP - Ahmed Syam - ‫اساسيات‬ ‫تعليم‬ : http://bit.ly/1SDRNgR
 Ahmed Syam - PHP Zatona: http://bit.ly/1mu2kiv
 Ahmed Syam - PHP CMS October 2014: http://bit.ly/1mu2kPp
 Eng. Mohammed Yahya - PHP and MySQL : http://bit.ly/1SDSRRS
 The New Boston - PHP Stock Market Analyzer: http://bit.ly/1IoMtGc
 The New Boston - PHP Tutorials: http://bit.ly/1IoMY3a
2) The C# Language:
 Adel Sabor - Web Application C# ASP.Net: http://bit.ly/1LGsWXz
 Adel Sabor - Course ASP: http://bit.ly/1jqehU1
 Adel Sabor - ASP.NET C# SQL Server: http://bit.ly/1jqetTl
 Adel Sabor - ASP.Net & AJAX Controls: http://bit.ly/1OmNCEM
 Adel Sabor - C# & Asp.net Diplomate: http://bit.ly/1mu2BSs
 The New Boston – C# Language: http://bit.ly/12eO9TL
3) Python:
 Eng. Mohamed Essa – Python Programming : http://bit.ly/1mu2sys
 Some Videos of Python Web Development: http://bit.ly/1mu2whu
 The New Boston - The Python 3.4: http://bit.ly/1BtORxp
 The New Boston - Python GUI with GTK+ 3: http://bit.ly/1IoKLEU
 The New Boston - Python Website Scanner: http://bit.ly/1IoKQIE
 The New Boston - Python GUI with Tkinter: http://bit.ly/1GYUaFz
4) XML:
 Lynda – XML Essential Training: http://bit.ly/1DaeLRV
 Lynda – XML integrated with Java: http://bit.ly/1MGGORo
 Ibrahim Qudeeh – XML Course: http://bit.ly/1Z9MENk
5) HTML & CSS:
 El Zero Web School Courses: http://on.fb.me/1O4EPFG
 Free4Arab - HTML & CSS: http://bit.ly/1LSExCw
 Free4Arab – CSS: http://bit.ly/1Cl238j
 Ibrahim Qudeeh – HTML: http://bit.ly/1IERduW
 The New Boston - XHTML and CSS: http://bit.ly/1LSEpTN
 30 Days to Learn HTML & CSS: http://bit.ly/1fhitEy
6) Ruby on Rails:
 Learn Ruby on Rails from Scratch: http://bit.ly/1mu2zdm
 Ruby on Rails 4.0 Lectures: http://bit.ly/1mu2y9f
 The New Boston - Ruby Programming: http://bit.ly/1IoMvhd
Your Guide to be a Good Software Engineer February 7, 2016
___________________________________________________________________________________________
Written by: Eng. Ahmed Mater
7) JavaScript & JQuery:
 Lynda – JavaScript Essential Training: http://bit.ly/1EW7omq
 Lynda - JavaScript and JSON: http://bit.ly/1F97W7G
 Lynda - JavaScript for Web Designers: http://bit.ly/1uxu9Uz
 The New Boston - JavaScript: http://bit.ly/1dHIgnL
 The New Boston - jQuery: http://bit.ly/1CWkc75
 The New Boston - AJAX: http://bit.ly/1IoMk5G
 El Zero Web School Courses: http://on.fb.me/1O4EPFG
 Eng. Youssef Islmail – JavaScript: http://bit.ly/1NJ5O89
 Ibrahim Qudeeh – JQuery 1: http://bit.ly/1ChApsv
 Ibrahim Qudeeh – JQuery 2: http://bit.ly/1NJ64nm
 Adel Sabor - Intro to Web : HTML5+CSS3+JavaScript: http://bit.ly/1JQfexT
8) Databases:
 Ahmed Syam - SQL Language: http://bit.ly/1SDRRx4
 Data Access Solutions using C# & ADO .NET: http://bit.ly/1mu2DKa
 Data Access By Eng-Eslam Ghanem: http://bit.ly/1mu2K8i
 Adel Sabor - JDeveloper 11g Course: http://bit.ly/1jqdUc5
 Adel Sabor - Oracle Database SQL & PL/SQL: http://bit.ly/1jqdW3G
 ‫النجار‬ ‫أحمد‬ .‫م‬ - Learning SQL Server 2012: http://bit.ly/1mu2Mxc
 Eng. Ahmed Habib - Oracle Developer (SQL): http://bit.ly/1mu2FBE
 The New Boston - MongoDB for Beginners: http://bit.ly/1IoLrtW
 The New Boston - MySQL Database: http://bit.ly/1IoMvxR
9) J2EE Java Enterprise Edition:
 ‫على‬ ‫عهود‬ .‫م‬ - JSP-Servlet-JSF: http://bit.ly/1mu2qXi
 Eng. Ibrahim Eladdah - Java EE: http://bit.ly/1mu2rud
 Adel Sabor - Java Course Applet Servlet – JSP: http://bit.ly/1MWVdW1
 Adel Sabor – JSF using JDeveloper: http://bit.ly/1jqeXsA
13.The Recommended Professionals:
 Ahmed Eltabakh : Embedded Systems : http://bit.ly/1i1ncvx
 Hamdy Soltan : Embedded & Hardware : http://bit.ly/1i1neDy
 Mahmoud Samir Fayed : Programming : http://bit.ly/a25sw
 Abdallah Eid : Programming : http://bit.ly/qswcafw
 Ali Hamdi : Web Design : http://bit.ly/AHamdi
 Mohamed Yahia : Web Development : http://bit.ly/MYahia
 Ahmed Syam : Web Development : http://bit.ly/ASyam
 Ahmed Tartour : Database : http://bit.ly/ATartour
 Mohamed Mostafa : Database : http://bit.ly/asdtckq
 Free4Arab : Networking : http://bit.ly/xcvwaz
 Adel el Hamidi : Networking : http://bit.ly/AHamidi
14.My Contacts: Free to contact me at anytime (preferred through Facebook)
 LinkedIn : https://www.linkedin.com/in/ahmedmater
 FB Group: http://on.fb.me/1MqbSFi
 FB Profile: https://www.facebook.com/ahmedmater20
 YouTube Channel: http://bit.ly/20lQl67
 Facebook Page – Free Courses and Books: https://www.facebook.com/free.Course.book
 Facebook Page – Books and MOOCs: https://www.facebook.com/Books.And.Moocs
 E-mail: ahmedmotair@gmail.com

More Related Content

What's hot

Anvita Web Contentfor Indian Language 15mar2001
Anvita   Web Contentfor Indian Language 15mar2001Anvita   Web Contentfor Indian Language 15mar2001
Anvita Web Contentfor Indian Language 15mar2001guest6e7a1b1
 
HTML & JAVA Script
HTML & JAVA ScriptHTML & JAVA Script
HTML & JAVA Script
Nitesh Gupta
 
What is html
What is htmlWhat is html
What is html
EVA Mokwena
 
4.language expert rendering unicode text on ascii editor for indian languages...
4.language expert rendering unicode text on ascii editor for indian languages...4.language expert rendering unicode text on ascii editor for indian languages...
4.language expert rendering unicode text on ascii editor for indian languages...
EditorJST
 
Programming
Programming Programming
Programming
Kapcom Rawal
 
Programming paradigm and web programming
Programming paradigm and web programmingProgramming paradigm and web programming
Programming paradigm and web programming
Mohammad Kamrul Hasan
 
12 best programming languages for web &amp; app development
12 best programming languages for web &amp; app development12 best programming languages for web &amp; app development
12 best programming languages for web &amp; app development
Biztech Consulting & Solutions
 
Myanmar fonts & unicode
Myanmar fonts & unicodeMyanmar fonts & unicode
Myanmar fonts & unicode
Ngwe Tun
 
Introduction to W3C I18N Best Practices
Introduction to W3C I18N Best PracticesIntroduction to W3C I18N Best Practices
Introduction to W3C I18N Best Practices
Gopal Venkatesan
 
Ant conc ~design & development of a freeware
Ant conc ~design & development of a freewareAnt conc ~design & development of a freeware
Ant conc ~design & development of a freewaresarahannelazarus
 
JPT : A SIMPLE JAVA-PYTHON TRANSLATOR
JPT : A SIMPLE JAVA-PYTHON TRANSLATOR JPT : A SIMPLE JAVA-PYTHON TRANSLATOR
JPT : A SIMPLE JAVA-PYTHON TRANSLATOR
caijjournal
 
Programming
ProgrammingProgramming
Programming
shalsmart12
 
Programming language (JGMNHS)
Programming language (JGMNHS)Programming language (JGMNHS)
Programming language (JGMNHS)Katherine Gamboa
 
JAVA Developer_Resume_Vaibhav Srivastav
JAVA Developer_Resume_Vaibhav SrivastavJAVA Developer_Resume_Vaibhav Srivastav
JAVA Developer_Resume_Vaibhav SrivastavVaibhav Srivastav
 
Object code
Object codeObject code
Object code
JK Knowledge
 
Html interview-questions-and-answers
Html interview-questions-and-answersHtml interview-questions-and-answers
Html interview-questions-and-answers
MohitKumar1985
 
Computer language23
Computer language23Computer language23
Computer language23
muthu kumari
 

What's hot (20)

Anvita Web Contentfor Indian Language 15mar2001
Anvita   Web Contentfor Indian Language 15mar2001Anvita   Web Contentfor Indian Language 15mar2001
Anvita Web Contentfor Indian Language 15mar2001
 
HTML & JAVA Script
HTML & JAVA ScriptHTML & JAVA Script
HTML & JAVA Script
 
What is html
What is htmlWhat is html
What is html
 
4.language expert rendering unicode text on ascii editor for indian languages...
4.language expert rendering unicode text on ascii editor for indian languages...4.language expert rendering unicode text on ascii editor for indian languages...
4.language expert rendering unicode text on ascii editor for indian languages...
 
Html Tutor
Html TutorHtml Tutor
Html Tutor
 
Programming
Programming Programming
Programming
 
Programming paradigm and web programming
Programming paradigm and web programmingProgramming paradigm and web programming
Programming paradigm and web programming
 
12 best programming languages for web &amp; app development
12 best programming languages for web &amp; app development12 best programming languages for web &amp; app development
12 best programming languages for web &amp; app development
 
Myanmar fonts & unicode
Myanmar fonts & unicodeMyanmar fonts & unicode
Myanmar fonts & unicode
 
Introduction to W3C I18N Best Practices
Introduction to W3C I18N Best PracticesIntroduction to W3C I18N Best Practices
Introduction to W3C I18N Best Practices
 
Ant conc ~design & development of a freeware
Ant conc ~design & development of a freewareAnt conc ~design & development of a freeware
Ant conc ~design & development of a freeware
 
JPT : A SIMPLE JAVA-PYTHON TRANSLATOR
JPT : A SIMPLE JAVA-PYTHON TRANSLATOR JPT : A SIMPLE JAVA-PYTHON TRANSLATOR
JPT : A SIMPLE JAVA-PYTHON TRANSLATOR
 
Programming
ProgrammingProgramming
Programming
 
Programming language (JGMNHS)
Programming language (JGMNHS)Programming language (JGMNHS)
Programming language (JGMNHS)
 
JAVA Developer_Resume_Vaibhav Srivastav
JAVA Developer_Resume_Vaibhav SrivastavJAVA Developer_Resume_Vaibhav Srivastav
JAVA Developer_Resume_Vaibhav Srivastav
 
Unit 1.2
Unit 1.2Unit 1.2
Unit 1.2
 
Object code
Object codeObject code
Object code
 
Ant conc notes
Ant conc notesAnt conc notes
Ant conc notes
 
Html interview-questions-and-answers
Html interview-questions-and-answersHtml interview-questions-and-answers
Html interview-questions-and-answers
 
Computer language23
Computer language23Computer language23
Computer language23
 

Viewers also liked

Open Source Solution
Open Source SolutionOpen Source Solution
Open Source Solutionittishait
 
Ad basic tech_workshop
Ad basic tech_workshopAd basic tech_workshop
Ad basic tech_workshop
manisherp084
 
Smart pos stepbystep-v2-0
Smart pos stepbystep-v2-0Smart pos stepbystep-v2-0
Smart pos stepbystep-v2-0
Rawntech Mak
 
Krefeld iDempiere 05/17/2013
Krefeld iDempiere 05/17/2013Krefeld iDempiere 05/17/2013
Krefeld iDempiere 05/17/2013
MULTIMAGE CONSULTANCY
 
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java DevelopersOpen Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
cboecking
 
Mahmoud Elmasry CV - Senior Software Quality Assurance Engineer
Mahmoud Elmasry CV - Senior Software Quality Assurance EngineerMahmoud Elmasry CV - Senior Software Quality Assurance Engineer
Mahmoud Elmasry CV - Senior Software Quality Assurance EngineerMahmoud Elmasry
 

Viewers also liked (6)

Open Source Solution
Open Source SolutionOpen Source Solution
Open Source Solution
 
Ad basic tech_workshop
Ad basic tech_workshopAd basic tech_workshop
Ad basic tech_workshop
 
Smart pos stepbystep-v2-0
Smart pos stepbystep-v2-0Smart pos stepbystep-v2-0
Smart pos stepbystep-v2-0
 
Krefeld iDempiere 05/17/2013
Krefeld iDempiere 05/17/2013Krefeld iDempiere 05/17/2013
Krefeld iDempiere 05/17/2013
 
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java DevelopersOpen Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
 
Mahmoud Elmasry CV - Senior Software Quality Assurance Engineer
Mahmoud Elmasry CV - Senior Software Quality Assurance EngineerMahmoud Elmasry CV - Senior Software Quality Assurance Engineer
Mahmoud Elmasry CV - Senior Software Quality Assurance Engineer
 

Similar to Your Guide to be a Software Engineer

What Is Coding And Why Should You Learn It?
What Is Coding And Why Should You Learn It?What Is Coding And Why Should You Learn It?
What Is Coding And Why Should You Learn It?
Syed Hassan Raza
 
Software_engineering.pptx
Software_engineering.pptxSoftware_engineering.pptx
Software_engineering.pptx
john6938
 
Chapter no 1
Chapter no 1Chapter no 1
2 Programming Language.pdf
2 Programming Language.pdf2 Programming Language.pdf
2 Programming Language.pdf
KINGZzofYouTube
 
Lesson 1-3 Fundamentals of Programming.pptx
Lesson 1-3 Fundamentals of Programming.pptxLesson 1-3 Fundamentals of Programming.pptx
Lesson 1-3 Fundamentals of Programming.pptx
DysRobles
 
Unit 1
Unit 1Unit 1
Unit 1
ankita1317
 
JAVA
JAVAJAVA
5 Programming Languages for Databases to Learn In 2023.pptx
5 Programming Languages for Databases to Learn In 2023.pptx5 Programming Languages for Databases to Learn In 2023.pptx
5 Programming Languages for Databases to Learn In 2023.pptx
matlabassignmenthelp1
 
Introduction to systems programming
Introduction to systems programmingIntroduction to systems programming
Introduction to systems programming
Mukesh Tekwani
 
Types Of Coding Languages: A Complete Guide To Master Programming
Types Of Coding Languages: A Complete Guide To Master ProgrammingTypes Of Coding Languages: A Complete Guide To Master Programming
Types Of Coding Languages: A Complete Guide To Master Programming
calltutors
 
Code learning
Code learningCode learning
Code learning
Vikas kumar
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
Markus Voelter
 
Chapter 1
Chapter 1Chapter 1
Chapter 1
ZcelTablizo3
 
Introduction to programming c
Introduction to programming cIntroduction to programming c
Introduction to programming c
Md. Rakibuzzaman Khan Pathan
 
The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184
Mahmoud Samir Fayed
 
3. WEB TECHNOLOGIES.pptx B.Pharm sem 2 CAP
3. WEB TECHNOLOGIES.pptx B.Pharm sem 2 CAP3. WEB TECHNOLOGIES.pptx B.Pharm sem 2 CAP
3. WEB TECHNOLOGIES.pptx B.Pharm sem 2 CAP
Vedika Narvekar
 
Automatic answer checker
Automatic answer checkerAutomatic answer checker
Automatic answer checker
Yesu Raj
 
Programming with \'C\'
Programming with \'C\'Programming with \'C\'
Programming with \'C\'
bdmsts
 
UNIT-2web technologybchelor .pptx
UNIT-2web technologybchelor        .pptxUNIT-2web technologybchelor        .pptx
UNIT-2web technologybchelor .pptx
nidhidube10
 

Similar to Your Guide to be a Software Engineer (20)

What Is Coding And Why Should You Learn It?
What Is Coding And Why Should You Learn It?What Is Coding And Why Should You Learn It?
What Is Coding And Why Should You Learn It?
 
Software_engineering.pptx
Software_engineering.pptxSoftware_engineering.pptx
Software_engineering.pptx
 
Chapter no 1
Chapter no 1Chapter no 1
Chapter no 1
 
Java
JavaJava
Java
 
2 Programming Language.pdf
2 Programming Language.pdf2 Programming Language.pdf
2 Programming Language.pdf
 
Lesson 1-3 Fundamentals of Programming.pptx
Lesson 1-3 Fundamentals of Programming.pptxLesson 1-3 Fundamentals of Programming.pptx
Lesson 1-3 Fundamentals of Programming.pptx
 
Unit 1
Unit 1Unit 1
Unit 1
 
JAVA
JAVAJAVA
JAVA
 
5 Programming Languages for Databases to Learn In 2023.pptx
5 Programming Languages for Databases to Learn In 2023.pptx5 Programming Languages for Databases to Learn In 2023.pptx
5 Programming Languages for Databases to Learn In 2023.pptx
 
Introduction to systems programming
Introduction to systems programmingIntroduction to systems programming
Introduction to systems programming
 
Types Of Coding Languages: A Complete Guide To Master Programming
Types Of Coding Languages: A Complete Guide To Master ProgrammingTypes Of Coding Languages: A Complete Guide To Master Programming
Types Of Coding Languages: A Complete Guide To Master Programming
 
Code learning
Code learningCode learning
Code learning
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
 
Chapter 1
Chapter 1Chapter 1
Chapter 1
 
Introduction to programming c
Introduction to programming cIntroduction to programming c
Introduction to programming c
 
The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184
 
3. WEB TECHNOLOGIES.pptx B.Pharm sem 2 CAP
3. WEB TECHNOLOGIES.pptx B.Pharm sem 2 CAP3. WEB TECHNOLOGIES.pptx B.Pharm sem 2 CAP
3. WEB TECHNOLOGIES.pptx B.Pharm sem 2 CAP
 
Automatic answer checker
Automatic answer checkerAutomatic answer checker
Automatic answer checker
 
Programming with \'C\'
Programming with \'C\'Programming with \'C\'
Programming with \'C\'
 
UNIT-2web technologybchelor .pptx
UNIT-2web technologybchelor        .pptxUNIT-2web technologybchelor        .pptx
UNIT-2web technologybchelor .pptx
 

Recently uploaded

"Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe..."Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe...
SACHIN R KONDAGURI
 
678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf
CarlosHernanMontoyab2
 
Acetabularia Information For Class 9 .docx
Acetabularia Information For Class 9  .docxAcetabularia Information For Class 9  .docx
Acetabularia Information For Class 9 .docx
vaibhavrinwa19
 
Operation Blue Star - Saka Neela Tara
Operation Blue Star   -  Saka Neela TaraOperation Blue Star   -  Saka Neela Tara
Operation Blue Star - Saka Neela Tara
Balvir Singh
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
Pavel ( NSTU)
 
The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
Jisc
 
How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17
Celine George
 
Thesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.pptThesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.ppt
EverAndrsGuerraGuerr
 
Introduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp NetworkIntroduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp Network
TechSoup
 
Instructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptxInstructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptx
Jheel Barad
 
Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
Tamralipta Mahavidyalaya
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
Thiyagu K
 
How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...
Jisc
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
Celine George
 
Honest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptxHonest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptx
timhan337
 
The French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free downloadThe French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free download
Vivekanand Anglo Vedic Academy
 
Biological Screening of Herbal Drugs in detailed.
Biological Screening of Herbal Drugs in detailed.Biological Screening of Herbal Drugs in detailed.
Biological Screening of Herbal Drugs in detailed.
Ashokrao Mane college of Pharmacy Peth-Vadgaon
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
EduSkills OECD
 
Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
Mohd Adib Abd Muin, Senior Lecturer at Universiti Utara Malaysia
 
Guidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th SemesterGuidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th Semester
Atul Kumar Singh
 

Recently uploaded (20)

"Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe..."Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe...
 
678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf
 
Acetabularia Information For Class 9 .docx
Acetabularia Information For Class 9  .docxAcetabularia Information For Class 9  .docx
Acetabularia Information For Class 9 .docx
 
Operation Blue Star - Saka Neela Tara
Operation Blue Star   -  Saka Neela TaraOperation Blue Star   -  Saka Neela Tara
Operation Blue Star - Saka Neela Tara
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
 
The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
 
How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17
 
Thesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.pptThesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.ppt
 
Introduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp NetworkIntroduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp Network
 
Instructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptxInstructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptx
 
Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
 
How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
 
Honest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptxHonest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptx
 
The French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free downloadThe French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free download
 
Biological Screening of Herbal Drugs in detailed.
Biological Screening of Herbal Drugs in detailed.Biological Screening of Herbal Drugs in detailed.
Biological Screening of Herbal Drugs in detailed.
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
 
Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
 
Guidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th SemesterGuidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th Semester
 

Your Guide to be a Software Engineer

  • 1. Your Guide to be a Software Engineer How to start software engineering in a good way Many of us want to be a programmer, but they don’t know How? or where to Start? And what to Learn? And even what are the resources for learning? Here you will find all the answers to your Questions Ahmed Mater Introduction to Programming “Everybody in this country should learn how to program a computer because it teaches you how to think” Steve Jobs 1955-2011
  • 2. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater The Content of the Speech: 1. What is Programming? 2. What is the language of the Computer? 3. The Different types of Computer Languages: 1. Programming Languages 2. Markup languages 3. Style Sheets 4. Scripting Languages 5. Query Languages 6. Data Exchanging Languages 4. Types of the Programming Languages: 1. Machine Language 2. Assembly Language 3. Low-Level Languages 4. High-Level Languages 5. The Main Majors of Programming: 1. Desktop Applications 2. Web Development 3. Mobile Applications 4. Game Programming 5. System Programming 6. Structured vs Object-Oriented Programming: 7. How to Learn Software Programming: 1. The English Language 2. Watching Courses 3. Reading Books and References 4. Which One to start with? (Courses or Books) 5. The Communities Websites 6. The Tutorial Websites 7. The Language Documentation 8. Getting Experience from the Experts and Professionals 9. The Online Judge and Problem Solving 10. Finally Where to start? What to learn first? 8. How to write a Code for a Program? 1. Defining the Problem 2. Planning the Problem 3. Coding the Program 4. Testing the Program 5. Documenting the Code
  • 3. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 9. What to focus on when you start learning software? 1. Perform the functionality 2. How to write a Readable Source Code 3. How to use the Debugger tool 4. The Algorithm of the Code 5. How to use Libraries in your code 10. The Academic Courses in College 1. Visual Basic 2. C Language Programming 3. C++ or Java Programming 4. Mathematics 5. Electronics 6. Digital Logic Design 7. Computer Organization and Architecture 8. Algorithms 9. Data Structure 10. Operating Systems 11. Computer Networks 12. Artificial Intelligence 13. Databases 14. Digital Control Systems 11. The Main Topics you can find in any Programming Language: 1. The Basics of the Language: 2. The Object-Oriented Programming: 3. I/O files (Binary or Text) 4. Collections, Generics and Data Structures 5. Database Connection 6. Server-Side Programming & Web Services 7. Multi-Threading and Parallel Programming 8. Handling Exceptions 9. Graphical User Interface (GUI) 10.Graphic Design (2D) 12. The Recommended Courses and Books 13. The Recommended Professionals 14. My Contacts (if you need any advice, Don’t hesitate to ask)
  • 4. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 1. So what is Programming? Programming is all about a problem in our life and we think about a way to solve it. But in an academic perspective it’s about some steps which we call instructions to solve the problem. Ex: How to go from here to the gas station: 1. Go ahead in this road for 1m 2. Take the first turn to the left 3. Then go straight and pass the first two turns 4. And take the third turn to the right 5. Finally you will find the gas station in the front These steps are called an Algorithm to solve the problem and we will talk about it later on in the part of the Academic Subjects, but we can notice here that this algorithm is written in our native language which may be English or Arabic, but can the computer understand our language? Of course Not!!!! Which lead us to another question. 2. What is the language of the Computer? Computer actually can understand only 2 numbers which we call them the Binary Digits (bits) and this Language is called the Machine Language, but there are more other Types of Languages that the computer can understand which are more advanced than the 0s and 1s. 3. So what are the Different types of Computer Languages? 1) Programming Languages: They are the Languages that talk to the computer directly either on the Hardware level directly such as (Machine Language and Assembly) or on the Software Level (Operating System) such as (COBOL, PASCAL, C, C++, Java, Python and C#) 2) Markup languages: They are concerned with the structure of the Web pages, as telling the web browser how to display the Webpages (Ex: they specify the Headers, Paragraphs, Images and more other things in the web page to the browser), and also you have to know that the HTML is the Markup Language for the web pages, but the XML is used to structure Applications such as those developed in C# and in Java for Android (Ex: It says that there is a button here and a text box there and so on)  HyperText Markup Language (HTML and XHTML and HTML5)  eXtensible Markup Language (XML) 3) Style Sheets: It is concerned with the beauty of the website which says (Ex: This Header will be in this font, that font size and this color and so on), (another Ex: This border will be with a specific thickness and has a margin of this value and so on), also you may notice that some buttons change when you move your mouse over them this is also done by the Style Sheets. Both of the Markup and Style-Sheets are called Front-End of a Website.  Cascading Style Sheets (CSS & CSS3) 4) Scripting Languages: Those are the Languages of the servers, they are used to give functionalities for the websites (Ex: comparing the username and password entered in a website with the database and reply to the user), this is called a Server-Side Programming at the Back-End of the Website.
  • 5. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater But the JavaScript is a little bit different than the other as it runs on the Web Browser not a Server and it’s used to give life to the Web pages and make it more interactive with the user by making the HTML more Dynamic to be called DHTML. Do more things which you can notice when you search in google and you see the results before clicking on the search button this is called the AJAX where the JavaScript communicate with the Server and retrieve the results from the database and display them at the same time. Now the JavaScript has ready Libraries that you can use directly without rewriting them from scratch such as JQuery.  PHP Hypertext Preprocessor (PHP)  Ruby on Rails  Python  JavaScript and JQuery 1. Document Object Model (DOM) 2. Asynchronous JavaScript and XML (AJAX) 5) Query Languages: They are the languages associated with the Database which are used for dealing with databases by inserting or retrieving or delete or update the data.  Structured Query Language (SQL)  Procedural Language/Structured Query Language (PL/SQL)  XQuery and XPath (They are related to the XML) 6) Data Exchanging Languages: They are languages used to send data over the internet in a form a structured message for example: (for the message in JSON, the data are values associated with keys { key : value }), unlike (for the message in XML, where data is between Tags <Tag> Data </Tag>)  JavaScript Object Notation (JSON)  eXtensible Markup Language (XML) 4. The Programming Languages: 1) Machine Language: This is the very basic language that the computer can understand or to be more precise is what any machine or hardware can understand. It consists of 2 digits (0 and 1) which are the representation of switching on and off a transistor or an electronic switch in a Logic circuit, it’s a very complicated language and used only for the Digital Logic Design. ex: to add 2 numbers the instruction may be (0100 00 0010 1100) 2) Assembly Language: This language is more developed than the Machine Language as it uses English words as codes instead of numbers to perform the operations such as (STO: Store in Memory) (ADD: to add numbers) and more others. This is easier than using (1s and 0s) to write a program. ex: to add 2 numbers which are 5 and 6 then print the result STO R0 5 R0 is a Register (Temporary storage) ADD R0 6 PRT R0
  • 6. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 3) Low-Level Languages: They are languages which are more developed than the Assembly and the Machine Language, they use also the English words for instructions (Ex: printf(): to o/p on the console) and symbols for operations (Ex: 3+2). It’s simpler than Assembly, as some operations may need several lines of Codes in Assembly which can be executed in only one statement in C Language. Ex: to add 2 numbers, 5 and 6 then print the result ( printf(“%d”, (2+5) ); ) 4) High-Level Languages: These are the most advanced Languages of them at all, they support what is known as OOP (Object Oriented Programming) - and we’ll talk about it later-, these languages can perform more advanced tasks like Network Development, Designing an Application with GUI (Graphical User Interface), Database Management and report generation and more other advanced stuff. Examples of these Languages are Java, Python, C# and more other. We have to know that The Machine Language is closer to the Hardware of the Computer and as we go higher from the Assembly to the Low-Level to the High-Level the more we get far from the Hardware. And also the more we got far from the Hardware the more advanced stuff we can perform and the slower the program will be. (For example: the program developed in C is hard to be coded but faster than the program coded in java). 5. What are the Majors of Programming? 1) Desktop Applications: In which the programmer develops an application to run on a desktop computer without using the internet like (MS Word or Notepad or AutoCAD), may be application for small business such as an Accounting Application for a Mall, and this could be accomplished by high-level Language such as: Java or C# or Python with the help of a Database (if needed) such as MySQL or SQL Server or any other DB. 2) Web Development: In which the programmer develops an application to run on a server so as a user, I will need access to the internet so I can use it, also to design a Web site with many pages and services, and this could be accomplished using a Markup Language such as HTML and Style Sheets such as CSS and a Scripting Language such as PHP or JavaScript or may be a Programming Language such as Java or C# or Python, also with a Database Management System (if needed) such as MySQL or PostgreSQL 3) Mobile Applications: In which the programmer develops an application to run on a mobile platform (such as Android or Windows Phone or iOS) and devices such as Tablets or TVs. But For each platform we use different Language and a different IDE For Android you can use Java as a Language and Android Studio as an IDE For Windows Phone you can use C# as a Language and MS Visual Studio as an IDE For iOS you can use Objective-C or Swift as a Language and Xcode or Cocoa as an IDE. 4) Game Programming: In which the programmer develops Games and Graphical animated applications, this major may be one of the difficult majors as it need to develop in a low-level languages such as C++ as it runs faster and more efficient, it also require a high degree of technical proficiency, (but trust me it’s fun to develop games) You can also develop games using Java or Python and Web Games using HTML5 and JavaScript, but the efficient games are developed in C++.
  • 7. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 5) System Programming: In which the programmer write codes in a low-level language that will run on a piece of hardware (such as: programming a Micro-Processor to perform a specific task) so it need to be fast and efficient. Also for a big project we could call it an Operating System of the Hardware The most common used Language in this Major are C++ and C Languages 6. Structured vs Object-Oriented Programming: During your career in programming you will encounter these two terms and you have to know the difference between them: 1) Structured Programming: This is an old approach used in the Low-Level Languages such as C & COBOL, this approach focuses on the process and the functionality more than the Data, as you will see that the application programmed in C is a set of blocks of codes called functions and there is one main block called main() function that uses the other blocks. 2) Object-Oriented Programming: this is a new programming approach used in the High- Level Languages such as C++, C#, Python, Java, and this approach focuses on the Data and the functionalities that works on this data, and encapsulate them in one container called Class, so the application programmed in Java will be a set of Classes each one of them is concerned with a specific topic, (Ex: Database Class that will deal with the database for the insertion and retrieval of data) another (Ex: Networking Class that will deal with the data from a web site or sending data to a server) and so on. 7. How to Learn Software Programming? Before anything, we have to know that the Computer Science Major is one of the hardest Majors in the working careers, but on the other hand It’s considered one of the highest and well-paid compared to other careers, and this because The CS Major is developing every day and more technologies are introduced, and the more technologies you learn, the more you will get paid for your career, and beside the Money if you are interested in puzzles and solving problems, then you are in the right place and I wish you good luck in the Future. Now you will know how to learn through some Points and I will recommend some good websites and YouTube Channels for you: 1) The English Language: We all know that the Computer and the Computer Languages are developed by the EU and US scientists so most of the good resources to study Computer Science are in English Language, so My first advice is to start learning English that will help you watch efficient courses and read good books and also you can share on the discussions on the programming sites, understand them and benefit from their knowledge.  Recommended resources: 1. EngVid – YouTube Channel: http://bit.ly/1IyDSRl 2. English Grammar - Al Darayn Academy : http://bit.ly/1Kqziaf 3. English Beginner - Al Darayn Academy : http://bit.ly/1Di0SqW 4. Mr Ehab Ramzy: http://on.fb.me/1JkbgPy 5. Mr Abdullah Amer: http://on.fb.me/1IoppGl 6. Ahmed Mater – How to learn English: http://on.fb.me/1N5SpYv
  • 8. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 2) Watching Courses: You will notice that the instructor in the course will focus on how to work on the IDE (the program for writing the code) and will teach you the main and most used statements of Codes, and he will focus on the working and practical side. 3) Reading Books and References: The writer of the book will teach you every single information about the topic even if they are additional or rarely used and to be good in any CS major you have to read books or at least have a reference so you can revise it when you need, This will lead us to the next Question? 4) Which One to start with? (Courses or Books) We have to know that in our learning journey, we will definitely need both the courses and books to improve our skills and learn more technologies and languages. but as a Start and if you are beginner or know nothing about programming, then you have to focus on learning through courses as they will be easy for you at the beginning and will focus on the important topics and practicing on the IDE. And after one or two courses you have to go for additional information through books. and One of the most good benefits of the books are that they will make you Open-minded and think in different ways and face more problems and some books introduce case studies from the real life. 5) The Communities Websites: As we mentioned before that reading is one of the main methods to learn, another resource is the community Websites that offer discussions about programming and the problems facing the juniors. So how this websites works? And how you can benefit from them?  Every one of us will face many problems during his career of programming and also will have questions that he can’t find their answers in Courses or Books.  Now there are websites that offer a very helpful service in which you can post your question and there are some other experts in the field will see your question and answer it, and you will try the answers given and for the correct answer you will confirm it.  These Websites offer their services for free and there is great number of experts and professionals devoting their time to see the questions and answering them and the websites organize everything and mark the questions if they have been answered or still not answered, so people can easily search through the Website.  Now for you as a beginner in the field when you face any problem try to search for the answers on these websites and read about every one’s experience and the answers and try the solutions, and when you become an expert don’t forget to help the juniors.  Recommended Websites: 1. Stack Over Flow: http://bit.ly/1H6BvGw 2. Reddit : http://bit.ly/1Kx8cSB 3. Code Project: http://bit.ly/1Kx8nxl 4. Site Point: http://bit.ly/1Kx8qsV 5. DZone: http://bit.ly/1Kx8Ak5 6. Bytes: http://bit.ly/1Kx8ARa
  • 9. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 6) The Tutorial Websites: These are more like the books but they are a little simpler, these websites offer you a simple written tutorials with some code samples and some written illustration of the Language topics. As you are going to be a programmer you don’t have to remember everything, on the other hand you need to have more other resources some may be big references for big issues and big problems which are Books and other simple resources for fast remembering a simple information, and these Tutorial Websites comes in handy for that.  Recommended Websites: 1. Tutorials Point: http://bit.ly/1IXph0Y 2. C plus plus: http://bit.ly/1UmeI0m 3. C Programming: http://bit.ly/1G0xVKi 4. Mozilla MDN: http://mzl.la/1ggGbRr 5. W3SchoolCode Project: http://bit.ly/1G0xVKj 7) The Language Documentation: For every Computer Language you will find an official website where you can find the Libraries of the language and the different versions and the most of them that you have to focus on is the Documentation of the Language, and if you don’t know what the documentation is? Well here is the answer, it’s the syntax of the language including the functions and classes (if it’s an OOP language), and for every class and function you find a simple description of what does the function do? And what is its inputs and its output? And more other helpful information. These are called the Libraries and the descriptions are called the Documentation.  Recommended Websites: 1. Python Documentation: http://bit.ly/1Kx9ltr 2. Java Documentation: https://docs.oracle.com/javase/7/docs/api/ 3. C# Documentation: http://bit.ly/1Kx9Tj6 8) Getting Experience from the Experts: in your career you will meet many other people who have more experience than you in the field, and my advice to you is to ask them and gain as much experience as you can from them, also try to see how they start their career and how they got their experience, also try to see their codes - if they are open source and available to you - and try to simulate them and see how they write and how they think.  In our field don’t be shy, if you are stuck in a middle of something try to search for a solution - especially in the Community Websites - and if you don’t get your answer, ask others who have more experience and show them what you have got from searching and they will sure help you and show you what is missing.  Another advice don’t depend on other to solve your problems and write your codes, or you will end up know nothing, you will have codes that aren’t yours and you couldn’t even write them again on your own.  Searching for a solution of a problem will help you see different thinking ways of different peoples and this will enhance your thinking skills, and your experience will increase, unlike other people who don’t search before asking, they got only one answer and in an easy way, and believe me the easy you got the answer the faster you will forget it, So Search for the information if you want to be good in your field.
  • 10. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 9) The Online Judge and Problem Solving: There are many websites that offer too many problems for you so you can think about the solutions, practice and apply what you have learned before, and the problems are categorized and there are highly advanced problems so you can practice the algorithms you have learned too.  Recommended Websites: 1. Code forces : http://bit.ly/1KxasJA 2. Hacker Rank: http://bit.ly/1KxaDVt 3. A2oj: http://bit.ly/1KxayAV 4. Timus Online Judge: http://acm.timus.ru/ 5. UVA Online Judge: http://bit.ly/1KxaPnD 10) So Where to start? and What to learn first? We have spoken before about the majors of the Programming and Software, and you have to choose one of these majors to work on and continue your career, but the most of us don’t know much about the major and want to take some time to choose the major. But at the same time you don’t have to take so long in thinking and don’t waste your time during thinking, and my advice is to start learning English with a general programming course to learn the initial codes and take a general look on the programming language.  Recommended Courses: 1. Lynda - Foundation of Programming: Fundamentals: http://bit.ly/1zIQSol 2. Dr. Ahmed Mohamed El Said - C++ Programming: http://bit.ly/1zGy8kR 3. NU – Islamabad – CS201 Introduction to Programming: http://bit.ly/1TLtv53 8. How to write a Code of a Program? When you have a problem and you want to make an application to solve this problem then you have to follow these 5 main steps in order to make a good application 1) Defining the Problem: Ask yourself what is the problem? (May be searching for a solution to a Mathematical Equations) and try to perform step (b) which is planning this problem, but if it’s difficult to be planned, you can break it into smaller problems and solve every problem alone, and this technique is called Divide-and-Conquer. 2) Planning the Problem: This may be done by either two ways (Drawing a Flow-Chart): which is a set of shapes (circles, squares, … so on) which represent the flow of the program step by step, or (Writing a Pseudocode): which is writing the steps that the computer has to follow in order to perform the task and they are written in any Natural Language (English or Arabic). 3) Coding the Program: This is about transforming the simple sentences of the pseudocode into instructions in any programming Language. 4) Testing the Program: After coding the program you have to try it and see the result, most of the programs don’t give correct results from the first time so you have to see where is the problem? and try to fix it out. 5) Documenting the Program: it’s about writing a detailed description about the project, and it may include the comments in the code, also the Flow-Chart and the Pseudocode of the Program, and this is an important step in programming procedure as it helps the programmer to remember everything about the project in the future.
  • 11. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 9. What to focus on when you start learning 1) Perform the functionality: You have to practice on solving problems and try as many as you can while learning, also try to code these solutions and you have to know that each problem may have many possible solutions, some of them are better than the other, so you can try to solve it and improve your solution in the future. 2) How to write a Readable Source Code: After some time of learning how to program and get used to face many problems and solve them, try to simulate the codes of the professionals (Ex: in the naming of variables and the arrangement of the code), this is very important specially for the big companies where you have to work on a project with many engineers and coders and you don’t have to explain everything in code for them because there are conventions and standards all of them follow so they can easily understand each other. 3) How to use the Debugger tool: When you code a problem you will face some errors (logical errors), and those are hard to find especially if you have an infinite loop in your program, so there are some tools that can help you to follow the execution of your application and in every step you can see the values of the variables and you can find the step where the code fails and solve it, this tool is called The Debugger, and you must learn it. 4) The Algorithm of the Code: As I said in the first point, we have to face many problems and try to solve them, and each problem may have many solutions and some of them are better than the other and you have to try solving with the better solution. The Algorithm of the code means the steps to solve the problems. You have to know that there are some famous problems that have a good solutions (Ex: finding the shortest path in a map) this can be accomplished through many algorithms and each of them has its own properties, so you have to study algorithms and make good use of it in your project 5) How to use Libraries in your code: Now the programming languages offers you a ready codes to use instead of writing from scratch, and this codes are already enhanced, safe and faster in execution and with them you can accomplish more things and highly advanced things. 10. The Academic Courses in College: You will spend 4 or 5 years in your college either you are a Computer and Informatics student or Engineering student and during this time you will study some practical subjects and other are more academic than practical, so you have to know how to make good use of each subject and how to enhance your skills during your time of study in the college. Another point, may be some of you think that the study in college is humble and the subjects are very simple and naïve compared to what you will work with in a company, but you have to know that it’s not that bad and my advice to you is to have your resources to study from and be step-ahead from the college and try to improve yourself through Courses and Books. Finally and since I’m in Engineering College, I will talk about the subjects we study in the Computer and Systems Dept. : 1) Visual Basic: This subject will introduce you to the programming and will focus on the GUI of the program and a little about the functionality, this may be a good start but it’s not practical at all, and not used in any company, it’s just for academics and to do simple stuff.
  • 12. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 2) C Programming: It’s a practical subject where you will have your true first steps in programming in the college, and whatever your major is, The C Language will benefit you of course, It will focus on the basics of the programming.  Recommended Courses: 1. The New Boston – C Language: http://bit.ly/1IoLNR2 2. Learning Lad – C Language: http://bit.ly/1K1qoUc 3. Dr. Ahmed Sallam – C Language: http://bit.ly/1K1qoUc  Recommended Books: 1. C – The Complete Reference: http://amzn.to/1TLo5an 2. C – Primer Plus : http://amzn.to/1TLpptV 3. Head first C: http://amzn.to/1TLpkGm 3) C++ or Java Programming: They are very practical subjects that you will use in your work at a company for sure (may be C++ isn’t widely used, unlike Java), This subject will revise the basics you have studied in C (better for you to revise them on your own) and will continue in the Object-Oriented Programming where you will study the classes, encapsulations, Inheritance, and may be Polymorphism and some other advanced stuff.  Recommended C++ Courses: 1. Dr. Ahmed Mohamed El Said - C++ Programming: http://bit.ly/1zGy8kR 2. Eng. Mostafa Saad - C++ Programming: http://bit.ly/1P7eV7O 3. The New Boston - C++ Programming: http://bit.ly/1IoMU3g 4. The New Boston - C++ GUI with Qt: http://bit.ly/1IoMpWW 5. Learning Lad - C++ Course: http://bit.ly/1K1qP0S  Recommended Java Courses: 1. Lynda - Java Essential Training: http://bit.ly/1bzea56 2. Lynda - Java Advanced Training: http://bit.ly/1JThqqH 3. The New Boston - Java Beginner: http://bit.ly/1IoMU3g 4. The New Boston - Java Intermediate: http://bit.ly/1IoMpWW 5. Eng Ahmed Helal - J2SE: http://bit.ly/1KxfuGd 6. Eng Mohamed Essa - Java Programming: http://bit.ly/1JJ7Tnx  Recommended Books: 1. C++ – The Complete Reference: http://amzn.to/1TLo9XI 2. C++ Primer Plus: http://amzn.to/1TLovgS 3. The C++ Programming Language: http://amzn.to/1TLos4I 4. Java The Complete Reference: http://amzn.to/1TLoCcp 5. Thinking in Java: http://amzn.to/1TLoMQO 6. Head first Java: http://amzn.to/1TLoFoz 4) Mathematics: During your 5 years in the college of Engineering, you will study Math, and mayn’t be all the problems are solved by Math, but Studying Math enhances your thinking skills and some of the solutions can but enhanced by Mathematics, so don’t ignore it.
  • 13. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 5) Electronics: As an Electric Engineer, you will study Electric Circuit and Electronics, each in a separate subject but for a software engineer you have to learn electronics which is the main ingredient of the Computer Hardware, and this will help you in many ways first, you will learn how the computer works and how this hardware work, second it will help you to understand How the Embedded Systems work and will pave the road to The Digital Logic Design. The Main Components you will study are (Diode and Transistors) 6) Digital Logic Design: This may be one of the interesting subjects you will study, and you will learn many things about how the machines work. Also you will learn more about the Machine Language and what does the 1s and 0s actually mean and how these 2 numbers can do different things. You will also learn how to design Logic Circuits, but they will be on paper not practical, so my advice to you is to try and buy some components and try to connect them and apply what you have learn in action, Trust me it’ll be more interesting than what do you think.  Recommended Courses and Books: 1. NPTEL – Digital Circuit & Systems Design: http://bit.ly/1TLq3Yc 2. NU – Islamabad - CS 302 – Digital Logic Design: http://bit.ly/1TLquBU 3. Digital Design Principles and Practices : http://amzn.to/1TLruG1 7) Computer Organization and Architecture: This is one of the most important subjects that you will study in the college, you will learn how the computer works as a total system, you will study the CPU, ALU, Main Memory, Cache, I/O Devices, and more other things, you won’t just learn how they work, but you will study them in detail and you will also study some codes in the Assembly Language and how it can be executed by the Processor. This subject is very very important if you are going to work in the field of the Embedded Systems as you will learn how to design a system and how the components will work together, and if you are going to work as a pure software it will be good to know how the computer works in detail.  Recommended Courses and Books: 1. Dr Ahmed Sallam – Old x86 Assembly Language: http://bit.ly/1NerEOB 2. Dr Ahmed Sallam –x86 Assembly Language: http://bit.ly/1NerI0O 3. NU – Islamabad – CS401 - Computer Arch. and Assembly: http://bit.ly/1TLrW7h 4. NPTEL - Computer Organization: http://bit.ly/1KviIJS 5. Bilkent University - CS-224 Computer Organization : http://bit.ly/1KviQsS 6. Coursera - Computer Architecture: http://bit.ly/1Kvk4V5 7. Computer Organization and Architecture William Stallings: http://amzn.to/1TLsslG 8) Algorithms: This is one of the interesting subjects you will study in college, but let me tell you more about Algorithms and what it is about? First the word Algorithm is named after the Arabic scientist Muhammad ibn Musa al-Khwarizmi the greatest mathematician who founded the science of Algebra, and while he was working on Algebra, he noticed that there are some problems can be solved by some constant steps, so he worked on collecting every problem and its own set of steps to solve it, and by the time when the science of programming is founded, each set of the steps to solve a problem in programming is called an Algorithm for that problem, there can be more than one algorithm for each problem. In this subject, you will learn how to study the Algorithm and How to specify which algorithm is faster, which is consuming more memory storage and this comparison will help you specify
  • 14. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater which algorithm is suitable for your application. You will also study many algorithms to solve some problems (such as Sorting, Searching, Compression, and more other problems) and notice that each of these problems can be solved by several algorithms and each has its own properties.  Recommended Courses and Books: 1. NU – Islamabad – CS502 - Fundamentals of Algorithms: http://bit.ly/1TLrYvO 2. Coursera - Algorithms: Design and Analysis, Part 1 : http://bit.ly/1fYY1HW 3. Coursera - Algorithms: Design and Analysis, Part 2 : http://bit.ly/1fYY72h 4. Data Structure and Algorithms in Java: http://amzn.to/1TLtcam 5. Introduction to Algorithms: http://amzn.to/1TLtiyY 9) Data Structure: Sometimes it’s attached to the Algorithm, but it’s a different subject. This Subject is about how you can manipulate data in Memory or Database, you will study different ways to store and retrieve data, and other functions to manipulate Data (Ex: The Stack DS which works with FILO – where the first element enters an array will be the last to be retrieved) (another Ex: The Queue DS which works with FIFO – where the first element enters the array will be the first element to be retrieved) and more other Data Structures, and you will study each one and its properties and how they work so you can choose a suitable one for your project.  Recommended Courses and Books: 1. NU – Islamabad – CS301 Data Structures: http://bit.ly/1TLs9aD 2. UC Berkeley - CS61B - Data Structures: http://bit.ly/1TLxNJC 3. Data Structure and Algorithms in Java: http://amzn.to/1TLtcam 10) Operating Systems: It’s one of the important subjects, where you will study how the computer hardware executes the applications and what is going on behind the scene when you for example double click on a program on your desktop, you will also learn about some important terms such as Threads, Parallel execution of programs, Client-Server communications and How the I/O devices works. The OS is considered the interface between the Hardware and the User so you will learn what your simple clicks do inside the Hardware and you How the OS manages all the programs running and How the Processor executing them. This subject is associated with the Computer Organization as OS manages the working of the hardware and introduce it to the user in a friendly manner, and it’s very important to understand the Operating Systems if you want to design large Embedded System that will perform many tasks.  Recommended Courses and Books: 1. NU - Islamabad - Operating Systems: http://bit.ly/1TLs06X 2. Operating Systems by P.K.Biswas Sir: http://bit.ly/1KvjXZF 3. Dr Ahmed Sallam - Old Operating Systems: http://bit.ly/1NerDtZ 4. Dr Ahmed Sallam - Operating Systems: http://bit.ly/1NerDdw 5. Operating System Concepts: http://amzn.to/1TLxVJ8 11) Computer Networks: Another interesting subject where you will study what is the internet and how it works? Also you will understand how the data are transmitted over the internet, and how can two applications communicate with each other, and you will study some devices
  • 15. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater such as: Routers, Switches, Bridges and Hubs, and how the networks are constructed, and many other interesting things. This Subject is considered the basics of the IT Major in Computer Science, and if you are going to do programming for a Client-Server programming then you have to understand How the network works? And how the data are transferred through the network? It’s also very helpful in the field of the Internet of Things (IoT).  Recommended Courses and Books: 1. Coursera – Computer Networks: http://bit.ly/1TLxYoi 2. NTPEL – Computer Networks: http://bit.ly/1TLy3IR 3. Computer Networking – Top-Down Approach: http://amzn.to/1TLy7YR 12) Artificial Intelligence: This is the subject of those who want to work in the Robotics field, where you will learn more and more algorithms that you can use to develop an intelligent Robots, Algorithms for Searching, Solving Problems, Genetic Algorithms. The field of the AI (Artificial Intelligence) is vast and huge and what you will learn in this subject is an introduction, so if you are interested you have to continue in more advanced AI fields such as: Machine Learning, (NLP) Natural Language Processing, Computer Vision, (ANN) Artificial Neural Networks and more other.  Recommended Courses and Books: 1. Dr Ahmed Sallam – Introduction to Artificial Intelligence: http://bit.ly/1NerBlN 2. Udacity – Introduction to Artificial Intelligence: http://bit.ly/1TLyjYm 3. Artificial Intelligence A Modern Approach: http://amzn.to/1TLyliH 13) Databases: It’s one of the important subjects, and from its name it’s concerned with the Databases, and you will study the different types of Databases and how to design a database and how to connect the tables together, also you will study the SQL Language which is used to make queries from the database to store data in or retrieve data from the database, so it’s very important to study this subject especially if you are working on a project in which you will need a database, and even if you aren’t working on a project, try to practice on one, while studying this subject.  Recommended Courses and Books: 1. NU – Islamabad – CS403 - Database Management Systems: http://bit.ly/1TLs3Q4 2. Lynda – Foundation of Programming – Databases: http://bit.ly/1H5XDAH 3. Head First SQL: http://amzn.to/1TLytPk 4. Beginning Database Design: http://amzn.to/1TLzaYQ 14) Digital Control Systems: this subject may be more Hardware than being a Software but it has a software implementation, In the Digital Control Systems, you will study the types of the controllers and systems and how to design a controller to control this system, and these systems may be such as controlling an Air Conditioning to be constant on a specific Temperature, or controlling a Water-level in a Tank, and more other systems, you can notice that they are hardware (Controlling Motors or pumps and so on), so where is the software? The answer is in the controller which will have a Micro-Controller programmed to control the system at different states.
  • 16. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 11.The Main Topics you can find in any Programming Language: 1) The Basics of the Language: this is the part of the basics where you will study the types of variables and Data Types and how to make loops and Decisions and how to create functions from the codes to reuse them again several times. 2) The Object-Oriented Programming: we talked before about the OOP, so in this section you expect to study the attributes and Methods and how to build a class also you will learn about the inheritance between classes and the polymorphism which is the class takes many forms 3) I/O (Binary or Text): this section is about the streams and data and how to read from and write to the files either they are text or other types such as sound, video and so on. 4) Generics, Collections and Data Structures: this section is about the data structure where every language has its own Libraries of these Data Structures and you will just use them directly. 5) Database Connection: you will study here how to connect your code with a database and how to store and retrieve data in the Database through your program. 6) Server-Side Programming & Web Services: you will study here how to code an application to run on a server and how to connect you application with another one on a server and how to communicate through the network, also how to build a web service that can be called by the application in the future. 7) Multi-Threading and Parallel Programming: you will study in this section how to divide your application into separate parts so they can run together in parallel which decreases the executing time of the application and makes it more faster 8) Handling Exceptions: the good applications are those that don’t crash at any error happens, so you will study here the different types of errors (Exceptions) and how to handle them to keep the application stable. 9) Graphical User Interface (GUI): in this part you will learn how to design a friendly user interface such as Button, Textboxes, and Select lists and so on. And how to code the functionality of the buttons and the other components 10)Graphic Design (2D): you will study here how to draw using the programming language so you do some graphs in the Applications or developing applications with graphics such as developing games.
  • 17. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 12.The Recommended Courses and Books: First there is something I want to talk about: Many of you when they see many links for courses or many books introduced they got disappointed and think that it’s a big deal and they can’t handle it, so I want to say this, When I give many links courses for different people I just wanna introduce different styles of learning and writers for books, but for you as a student you will end up with only one course or a book that you prefer and get comfortable with his style. This is because some people prefer the detailed explaining and the many examples and some others prefer the fast information and the abstract one, and they practice by themselves. So you just take a look on the courses and the books, choose the best one of them for you and then watch the course or read the book. 1) The PHP Language:  PHP - Ahmed Syam - ‫اساسيات‬ ‫تعليم‬ : http://bit.ly/1SDRNgR  Ahmed Syam - PHP Zatona: http://bit.ly/1mu2kiv  Ahmed Syam - PHP CMS October 2014: http://bit.ly/1mu2kPp  Eng. Mohammed Yahya - PHP and MySQL : http://bit.ly/1SDSRRS  The New Boston - PHP Stock Market Analyzer: http://bit.ly/1IoMtGc  The New Boston - PHP Tutorials: http://bit.ly/1IoMY3a 2) The C# Language:  Adel Sabor - Web Application C# ASP.Net: http://bit.ly/1LGsWXz  Adel Sabor - Course ASP: http://bit.ly/1jqehU1  Adel Sabor - ASP.NET C# SQL Server: http://bit.ly/1jqetTl  Adel Sabor - ASP.Net & AJAX Controls: http://bit.ly/1OmNCEM  Adel Sabor - C# & Asp.net Diplomate: http://bit.ly/1mu2BSs  The New Boston – C# Language: http://bit.ly/12eO9TL 3) Python:  Eng. Mohamed Essa – Python Programming : http://bit.ly/1mu2sys  Some Videos of Python Web Development: http://bit.ly/1mu2whu  The New Boston - The Python 3.4: http://bit.ly/1BtORxp  The New Boston - Python GUI with GTK+ 3: http://bit.ly/1IoKLEU  The New Boston - Python Website Scanner: http://bit.ly/1IoKQIE  The New Boston - Python GUI with Tkinter: http://bit.ly/1GYUaFz 4) XML:  Lynda – XML Essential Training: http://bit.ly/1DaeLRV  Lynda – XML integrated with Java: http://bit.ly/1MGGORo  Ibrahim Qudeeh – XML Course: http://bit.ly/1Z9MENk 5) HTML & CSS:  El Zero Web School Courses: http://on.fb.me/1O4EPFG  Free4Arab - HTML & CSS: http://bit.ly/1LSExCw  Free4Arab – CSS: http://bit.ly/1Cl238j  Ibrahim Qudeeh – HTML: http://bit.ly/1IERduW  The New Boston - XHTML and CSS: http://bit.ly/1LSEpTN  30 Days to Learn HTML & CSS: http://bit.ly/1fhitEy 6) Ruby on Rails:  Learn Ruby on Rails from Scratch: http://bit.ly/1mu2zdm  Ruby on Rails 4.0 Lectures: http://bit.ly/1mu2y9f  The New Boston - Ruby Programming: http://bit.ly/1IoMvhd
  • 18. Your Guide to be a Good Software Engineer February 7, 2016 ___________________________________________________________________________________________ Written by: Eng. Ahmed Mater 7) JavaScript & JQuery:  Lynda – JavaScript Essential Training: http://bit.ly/1EW7omq  Lynda - JavaScript and JSON: http://bit.ly/1F97W7G  Lynda - JavaScript for Web Designers: http://bit.ly/1uxu9Uz  The New Boston - JavaScript: http://bit.ly/1dHIgnL  The New Boston - jQuery: http://bit.ly/1CWkc75  The New Boston - AJAX: http://bit.ly/1IoMk5G  El Zero Web School Courses: http://on.fb.me/1O4EPFG  Eng. Youssef Islmail – JavaScript: http://bit.ly/1NJ5O89  Ibrahim Qudeeh – JQuery 1: http://bit.ly/1ChApsv  Ibrahim Qudeeh – JQuery 2: http://bit.ly/1NJ64nm  Adel Sabor - Intro to Web : HTML5+CSS3+JavaScript: http://bit.ly/1JQfexT 8) Databases:  Ahmed Syam - SQL Language: http://bit.ly/1SDRRx4  Data Access Solutions using C# & ADO .NET: http://bit.ly/1mu2DKa  Data Access By Eng-Eslam Ghanem: http://bit.ly/1mu2K8i  Adel Sabor - JDeveloper 11g Course: http://bit.ly/1jqdUc5  Adel Sabor - Oracle Database SQL & PL/SQL: http://bit.ly/1jqdW3G  ‫النجار‬ ‫أحمد‬ .‫م‬ - Learning SQL Server 2012: http://bit.ly/1mu2Mxc  Eng. Ahmed Habib - Oracle Developer (SQL): http://bit.ly/1mu2FBE  The New Boston - MongoDB for Beginners: http://bit.ly/1IoLrtW  The New Boston - MySQL Database: http://bit.ly/1IoMvxR 9) J2EE Java Enterprise Edition:  ‫على‬ ‫عهود‬ .‫م‬ - JSP-Servlet-JSF: http://bit.ly/1mu2qXi  Eng. Ibrahim Eladdah - Java EE: http://bit.ly/1mu2rud  Adel Sabor - Java Course Applet Servlet – JSP: http://bit.ly/1MWVdW1  Adel Sabor – JSF using JDeveloper: http://bit.ly/1jqeXsA 13.The Recommended Professionals:  Ahmed Eltabakh : Embedded Systems : http://bit.ly/1i1ncvx  Hamdy Soltan : Embedded & Hardware : http://bit.ly/1i1neDy  Mahmoud Samir Fayed : Programming : http://bit.ly/a25sw  Abdallah Eid : Programming : http://bit.ly/qswcafw  Ali Hamdi : Web Design : http://bit.ly/AHamdi  Mohamed Yahia : Web Development : http://bit.ly/MYahia  Ahmed Syam : Web Development : http://bit.ly/ASyam  Ahmed Tartour : Database : http://bit.ly/ATartour  Mohamed Mostafa : Database : http://bit.ly/asdtckq  Free4Arab : Networking : http://bit.ly/xcvwaz  Adel el Hamidi : Networking : http://bit.ly/AHamidi 14.My Contacts: Free to contact me at anytime (preferred through Facebook)  LinkedIn : https://www.linkedin.com/in/ahmedmater  FB Group: http://on.fb.me/1MqbSFi  FB Profile: https://www.facebook.com/ahmedmater20  YouTube Channel: http://bit.ly/20lQl67  Facebook Page – Free Courses and Books: https://www.facebook.com/free.Course.book  Facebook Page – Books and MOOCs: https://www.facebook.com/Books.And.Moocs  E-mail: ahmedmotair@gmail.com