690 likes | 709 Views
Join Dr. Mohamed El-Ramly for an in-depth introduction to the Programming course. Learn about the objectives, content, and benefits of studying C++ for problem-solving and software engineering. Explore various programming languages and career opportunities in the tech industry. Enhance your skills and knowledge in structured programming, algorithms, and debugging. Get inspired and motivated to excel in your studies and future career in computer science.
E N D
Cairo University, Faculty of Computers and Information CS112 – 2017 / 2018 2nd TermProgramming ILecture 1: Welcome and Introduction By Dr. Mohamed El-Ramly
Lecture Objectives • Introduction • Course Objectives and Content • Why C++ ? • Course Administration • Course Resources • Pb #1 – Two Player Games • Program Life Cycle
جدد النية • من سلك طريقا يلتمس فيه علما سهل الله له طريقا إلى الجنة • العلم يرفع بيتاً لا عماد لــه .... والجهل يهدم بيت العز والكرم • العلم نور يضيء العقول المتخلفة ونبراس يفتح الدروب المظلمة • قصة طاعون لندن • لا تنتظر التغيير و لكن اصنعه • قصة صاحب مزرعة الخيول
I am …… • Mohammad El-Ramly • Assistant Professor of Computer Sciences • Specialization: Software Engineering • B.Sc. of Computer Engineering, Ain Shams University, Cairo. • M.Sc. of Operations Research (DS), Cairo University. • Ph.D. of Computer Science, University of Alberta, Canada.
إعتذار الطلاب الكرام • أرجو ألا أكون سببت لأى منكم ألما أو ضيقا أو ضغطا أو تعبا عضويا أو نفسيا خلال المقرر السابق • كما أننى اجتهدت فى التدريس و التقييم و إذا كنت موفقا فى ذلك فهذا من توفيق الله • و إذا كنت مقصرا فمن نفسى فاعتذر عن ذلك • و يسرنى أن أساعدك على التقدم و التفوق فى دراستك بكل ما يمكننى
What is this course about? • Computational Problem Solving • Structured Programming • Programming in C++
What is this course about? • Study in FCI goes in streams or lines • Software Engineering line includes: • Programming I • Programming II • Data Structures • Software Engineering I • Software Engineering II
Why Programming • Make things and see them work • Solve challenging problems • Have impact on life, work and how people do things • Learn patience • Burn your sins • Have fun
Do not like to be a programmer? • Tester, Quality Assurance Engineer, … • System Administrator, network engineer, … • Customer support, configuration, customization, …. • Database developer, administrator, consultant, … • Game developer, designer, tester, etc … • IT governance, auditing, contracting, etc …. • Education, training, etc. …. • …………………………… homemaking
Remember 1st Term Visitors • Ahmed Abdehay (Game Developer) • Programmer • Dr Nour Mahmoud (Web Developer) • Programmer • Mohamed Sabra (Entrepreneur) • Programmer, Business Analyst and Company Owner • Ahmed Anas (Security Officer) • ………… + Problem solving and some programming • Ahmed Samir (Data Scientist) • ………… + Problem solving and some programming
Remember 1st Term Visitors • Ahmed Abdehay (Game Developer) • Programmer • Dr Nour Mahmoud (Web Developer) • Programmer • Mohamed Sabra (Entrepreneur) • Programmer, Business Analyst and Company Owner • Ahmed Anas (Security Officer) • ………… + Problem solving and some programming • Ahmed Samir (Data Scientist) • ………… + Problem solving and some programming
Course Objectives • The objective of this course is to master problem solving using computer programing with C++ structured style.
Course Learning Outcomes • Analyze a computational problem and develop a solution strategy to solve it. • Develop the needed algorithms to solve the problem and program the solution in C++. • Develop medium size programs in C++. • Understand the basic concepts of structured programming using C++. • Practice basic debugging and good coding skills. • Practice team work.
Why C++? • Why not Python? • Why not Java? • Why not C#? • Why not C?
Q1: How many languages exist? • Give a guess ? • 10, 20, 50, 100, …… ? • What do you think? • 2000 ~ 3000 • http://wiki.c2.com/?HelloWorldInManyProgrammingLanguages • http://www.99-bottles-of-beer.net/ • https://www.randstad.ca/job-seeker/job-tips/archives/comparing-11-popular-coding-languages_530/
Q2: Which language is popular? TIOBE Index • https://www.tiobe.com/tiobe-index/
Before C / C++, B Programming Language • https://en.wikipedia.org/wiki/B_(programming_language)
After C/C++, D Programming Language • https://dlang.org/
Q3: Who are the news kids in the block? • Name three new languages ? • Lua, Koteln, Swift, Julia, R, ….. • How many languages should I know?
Evolution of Programming • Machine Languages • Reflect hardware structure not programming ease • In 1955+, John Backus: Can we write programs like we write math formulas? • Formula Translation (FORTRAN) • IBM: Can we write code like we write English? • Common Business Oriented Language (Cobol)
Evolution tree of some PLs See Tiobe Index
Stroustrup - Essence - Going Native'13 Programming Languages Domain-specific abstraction General-purpose abstraction Fortran Simula Java Cobol C++ C++11 Direct mapping to hardware C# Assembler BCPL C
Why C++ ? Object-oriented Programming Structured Programming Low Level Programming
C Language Object-oriented Programming Structured Programming Low Level Programming C
Java Language Object-oriented Programming Structured Programming Java Low Level Programming
C# Language Object-oriented Programming Structured Programming Low Level Programming C#
C++ Language Object-oriented Programming Structured Programming Low Level Programming C++
C++ Design Goals • Provide object-oriented features in C-based language, without compromising efficiency • Backwards compatibility with C • Data abstraction • Objects and classes • Efficiency of compiled code, close to assembly • If you do not use a feature you should not pay for it
C++ Target • Systems programming • Embedded systems • Resource constrained systems • Large systems
C++ Areas of Excellence • C++ programming is pervasive in many key areas of the software industry: • Computer games and entertainment industry • Audio/Video processing • Computer device drivers • Control systems • Telecommunications systems • Embedded software systems • Simulation systems • Medical imaging
Basic Course Information • Course Code:CS112 • Course Name: Programming I • Course Credit: 3credits • Instructors: Dr. Mohammad El-Ramlym.elramly@fci-cu.edu.eg Dr Amin Allama.allam@fci-cu.edu.eg • Office Hours: Sun and Wed 1pm – 4pm • TAs: Many of them – Check your group TA • Site: http://www.acadox.com/join/FPKJEC http://www.acadox.com/class/51096
Course Contents • Algorithmic problem Solving (Different examples and problems) • Structured programming (Divide and conquer, solution breakdown, functions) • Introduction (Introduction, computer organization, programming languages) • Basics of C++ (C++ history, C++ program structure, program lifecycle) • Variables and data types (Variables, identifiers, variable declaration and initiation and constants) • Basic I/O (cout and cin objects, >> and << operators) • Operators (Operators for arithmetic, comparison and logic, type-casting, operator precedence)
Course Contents • Control (if, if-else, ? operator, switch, for, while, do-while, break and continue) • Functions (Function prototyping, function calls, void functions, passing by value and by reference, variable scope, static variables, recursion) • Compound data types (Single and multi-dimensional arrays, search and sorting an array) • Character arrays and C-strings (Strings in C language, defining and accessing C-strings) • Pointers (Pointer declaration and usage, pointers and arrays, pointers and functions, arrays of pointers) • Structured and Enumerated Types. • C++11 (New features) & Overview of C++ Libraries
Mode of Delivery • Lec: Sun 11:00, Tues 8:00 • Lab: As scheduled • Textbook : • Recommended: • Problem Solving with C++ (Walter Savitch) • C++ How to Program, Dietel and Dietel , 9th / 10th Ed. (International Edition), Pearson • www.cplusplus.com • Coursework: Assignments, Projects, Labs, Exams Expect to put minimum 6~8 hours a week
Course Assessment • Midterm and quizzes ~15 marks • Lab exam ~5 marks • Assignments ~16 marks • Lab tasks ~6 marks
Cheating • Do not even think about it
Resources • Lectures – You must attend • The books • Sections and labs • Prof, TA, colleagues, friends, …. • Stackoverflow.com • Geeks 4 Geeks • Cplusplus.com • Google
Brain Teaser 1 • Connect 9 dots with 4 lines without lifting the pen.