Concordia University Department of Computer Science and Software Engineering Click to edit Master title style ADVANCED PROGRAM DESIGN WITH C++ Part 0:

Slides:



Advertisements
Similar presentations
.NET Technology. Introduction Overview of.NET What.NET means for Developers, Users and Businesses Two.NET Research Projects:.NET Generics AsmL.
Advertisements

Assessment of Undergraduate Programs Neeraj Mittal Department of Computer Science The University of Texas at Dallas.
SMM5101 (ADVANCED MULTIMEDIA PROGRAMMING) Review of Multimedia Programming.
Reasons to study concepts of PL
ISBN Chapter 1 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Chapter 1 Topics Motivation Programming Domains.
CS565 Advanced Software Development (1 unit) Lecturer: Adrian O’Riordan Contact: is Office: prefab, behind.
Programming Languages Structure
ISBN Lecture 01 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Lecture 01 Topics Motivation Programming.
Concordia University Department of Computer Science and Software Engineering Click to edit Master title style ADVANCED PROGRAMING PRACTICES Introduction.
CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++
ISBN Chapter 1 Topics Motivation Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language.
1 An Introduction to Visual Basic Objectives Explain the history of programming languages Define the terminology used in object-oriented programming.
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Concepts of Programming Languages Chapter 1.
By Logan Phipps Hal student.  This power point explains some common programming languages enjoy  When done click on the home button to return to home.
Capstone Design Project (CDP) Civil Engineering Department First Semester 1431/1432 H 10/14/20091 King Saud University, Civil Engineering Department.
 2000 Prentice Hall, Inc. All rights reserved. 1 Introduction to Computers and C Programming Outline Introduction What Is a Computer? Computer Organization.
Programming Language Concepts
1 Object Oriented Programming Computer Systems Engineering (D2) and Programming (P)
 A set of objectives or student learning outcomes for a course or a set of courses.  Specifies the set of concepts and skills that the student must.
Object-Oriented Programming Dr. Napoleon H. Reyes, Ph.D. Computer Science Institute of Information and Mathematical Sciences Rm QA, IIMS, Albany.
Day 1 Session 2/ Programme Objectives
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Chapter 1- Introduction Lecture 1 Ready, fire, aim (the fast approach to software development). Ready, aim, aim, aim, aim... (the slow approach to software.
 2008 Pearson Education, Inc. All rights reserved Introduction to Computers, the Internet and World Wide Web.
C++ Programming. Table of Contents History What is C++? Development of C++ Standardized C++ What are the features of C++? What is Object Orientation?
Bjarne Stroustrup began work on "C with Classes" in The idea of creating a new language originated from Stroustrup's experience in programming for.
1 Programming Thinking and Method (0) Zhao Hai 赵海 Department of Computer Science and Engineering Shanghai Jiao Tong University
Microsoft Visual Basic 2005: Reloaded Second Edition
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
EECE 310 Software Engineering Lecture 0: Course Orientation.
Object Oriented Design and Programming Alan Goude Room: Sheaf 9323.
C++
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
Learning outcomes for BUSINESS INFORMATCIS Vladimir Radevski, PhD Associated Professor Faculty of Contemporary Sciences and Technologies (CST)
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages.
Early Adopter: Integrating Concepts from Parallel and Distributed Computing into the Undergraduate Curriculum Eileen Kraemer Computer Science Department.
Introduction to C++ Shirley Moore
C++ History C++ was designed at AT&T Bell Labs by Bjarne Stroustrup in the early 80's Based on the ‘C’ programming language C++ language standardised in.
Object Oriented Programming (FIT-II) J. H. Wang Feb. 20, 2009.
Object Oriented Programming (OOP) Design Lecture 1 : Course Overview Bong-Soo Sohn Assistant Professor School of Computer Science and Engineering Chung-Ang.
Design of a Typical Course s c h o o l s o f e n g I n e e r I n g S. D. Rajan Professor of Civil Engineering Professor of Aerospace and Mechanical Engineering.
Introduction to Computer Programming (FIT-I pro) J. H. Wang Sep. 17, 2007.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Object Oriented Programming (FIT-II) J. H. Wang Jan. 31, 2008.
Advanced Program Design with C++
A History of the C Languages By: Kevin Burnette. Outline History  Ancestor languages overview Development of C Development of C++
Methodology First and Language Second -A Way to Teach Object-Oriented Programming Haibin Zhu, PhD Department of Computer Science and Mathematics Nipissing.
COMP6411 COMPARATIVE STUDY OF PROGRAMMING LANGUAGES Part 0: Introduction Joey Paquet, Comparative Study of Programming Languages.
CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A.
N ational Q ualifications F ramework N Q F Quality Center National Accreditation Committee.
Introducing C++ to Java Programmers by Kip Irvine updated 2/27/2003.
Oman College of Management and Technology Course – MM Topic 7 Production and Distribution of Multimedia Titles CS/MIS Department.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
CSCI-383 Object-Oriented Programming & Design Lecture 25.
Lecture1 Instructor: Amal Hussain ALshardy. Introduce students to the basics of writing software programs including variables, types, arrays, control.
SFTW241 Programming Languages Architecture 2002~2003 Semester II Duration: 2003/2/11~ 2003/4/11 University of Macau Faculty of Science and Technology Computer.
The C++ Programming Language Lecture 0: Introduction to the course
Scott C. Johnson Lecturer Rochester Institute of Technology Spring 2016.
Advanced Program Design with C++
Advanced Programing practices
Done By: Ashlee Lizarraga Ricky Usher Jacinto Roches Eli Gomez
Advanced Program Design with C++
Object-Orientated Programming
Department of Computer Science The University of Texas at Dallas
Ada – 1983 History’s largest design effort
Derived Classes in C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2nd edition,
Advanced Programing practices
Advanced Program Design with C++
Advanced Program Design with C++
Presentation transcript:

Concordia University Department of Computer Science and Software Engineering Click to edit Master title style ADVANCED PROGRAM DESIGN WITH C++ Part 0: Introduction to the course Introduction to C++ Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Click to edit Master title style INTRODUCTION TO THE COURSE Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Name: Joey Paquet Position: Associate Professor, Department of Computer Science and Software Engineering Teaching topics: Programming languages, Compiler design, Software engineering and programming methodology Research topics: Design and implementation of programming languages, Parallel and/or distributed computing, Demand-driven computation, Context-driven computation Contact information: Web: Office: EV Office hours: Wednesdays 11am-1pm Introduction to the course: Instructor Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Prerequisite: COMP 352 previously or concurrently. Introduction to C++. I/O with stream classes. Pointers and their uses. The Standard Template Library (STL): containers, algorithms, iterators, adaptors, function objects. Class design: constructors, destructors, operator overloading, inheritance, virtual functions, exception handling, memory management. Advanced topics: libraries, locales, STL conventions, concurrency, template meta-programming. Applications of C++: systems, engineering, games programming. Project. Lectures: three hours per week. NOTE: Students who have received credit for COMP 446 may not take this course for credit. Introduction to the course: Calendar description Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Most of our courses are taught using the Java programming language. 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 Though C++ and Java have many similar syntactical elements and structures, C++ has many subtleties, technicalities and features that differ from Java. Most importantly, its implementation and runtime systems is very different from Java, which makes it well-adapted to the application areas mentioned previously. This course aims at teaching C++ to an audience well-trained in computer programming and putting the newly acquired knowledge into practice through a challenging project. Introduction to the course: Rationale Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering The project is to be undertaken small teams (typically 4 members) and consists of the building of a challengingly large and complex C++ application. The completion of the project is divided into two separate components: (1) the Intermediate Project Delivery is a first operational build of the software, effectively demonstrating the full implementation of some important software features; (2) the Final Project Delivery is the demonstration of the finalized version of your software. During the project deliveries, you also have to demonstrate that your code includes many of the C++ features presented in the lectures. The individual assignments will also be related to the project. Introduction to the course: Project Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering As part of both the Computer Science and Software Engineering program curriculum accreditation, the content of this course includes material and exercises related to the teaching and evaluation of graduate attributes. Graduate attributes are skills that have been identified by the Canadian Engineering Accreditation Board (CEAB) and the Canadian Information Processing Society (CIPS) as being central to the formation of Engineers, computer scientists and information technology professionals. The accreditation criteria for the Software Engineering and Computer Science programs dictate that graduate attributes are taught and evaluated as part of the courses. This particular course aims at teaching and evaluating 3 graduate attributes. The following is a description of these attributes, along with a description of how these attributes are incorporated in the course. Introduction to the course: Graduate attributes Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Graduate attribute 1: Problem analysis Definition: the ability to use appropriate knowledge and skills to identify, analyze, and solve complex engineering problems in order to reach substantiated conclusions. The project in this course is defined in a way that requires the students to analyze the problem at hand before and determine for themselves exactly what needs to be done, and then determine how and with the help of what tools and software libraries it can be achieved. Introduction to the course: Graduate attributes Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Graduate attribute 2: Design Definition: the ability to design solutions for complex, open-ended engineering problems and to design systems, components or processes that meet specified needs with appropriate attention to health and safety risks, applicable standards, and economic, environmental, cultural and societal considerations. The project in this course is presented in an open-ended fashion, and its size and complexity is such that it needs to be tackled in teams. The individual assignments provide a platform for designing at a smaller level, and provide the additional difficulty of having to be integrated in the larger design of the project. Introduction to the course: Graduate attributes Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Graduate attribute 3: Use of Engineering tools Definition: the ability to create, select, apply, adapt, and extend appropriate techniques, resources, and modern engineering tools to a range of engineering activities, from simple to complex, with an understanding of the associated limitations. The course teaches the use of the C++ language, and leaves the students free to select what programming environment and libraries that they will use in the assignments and project. Selection and use of the right tools and libraries is a crucial aspect of accomplishing the practical work. Introduction to the course: Graduate attributes Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Introduction to the course: Evaluation Joey Paquet, COMP Advanced Program Design with C++ Individual evaluation components: Written examinations (midterm, final): 15% + 30% 45% Individual assignments (3): 3 X 5% 15% Team work evaluation components: Intermediate project delivery: 15% Final project delivery: 25%

Concordia University Department of Computer Science and Software Engineering Y. Daniel Liang. Introduction to Programming with C++. Third Edition, Prentice-Hall, ISBN-13: Walter Savitch. Absolute C++. Fifth Edition, Addison-Wesley, ISBN- 13: Walter Savitch. Problem Solving with C++. Ninth Edition, Pearson, ISBN-13: Bjarne Stroustrup. A Tour of C++. Addison-Wesley, ISBN-13: Bjarne Stroustrup. The C++ Programming Language. Fourth edition. Addison-Wesley, ISBN-13: Bjarne Stroustrup. Foundations of C++. Proc. 22nd European Symposium on Programming (ESOP). Springer LNCS April Bjarne Stroustrup. A history of C++: In History of programming languages---II, Thomas J. Bergin, Jr. and Richard G. Gibson, Jr. (Eds.). ACM, New York, NY, USA DOI: / Bjarne Stroustrup. The Design and Evolution of C++. Addison Wesley, ISBN: March 1994 Introduction to the course: Bibliography Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Bjarne Stroustrup. Adding Classes to C: An Exercise in Language Evolution. Software – Practice and Experience, Vol. 13, pp , Bjarne Stroustrup. Classes: an abstract data type facility for the C language. SIGPLAN Not. 17, 1. January 1982, DOI: / Introduction to the course: Bibliography Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Click to edit Master title style INTRODUCTION TO C++ History Features and goals Significance Tools Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Introduction to C++ Joey Paquet, COMP Advanced Program Design with C++ C++ is a statically typed, multi-paradigm, compiled, general-purpose programming language. It is a middle-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell Laboratories as an enhancement to the C programming language following the object-oriented principles pioneered by Simula. Bjarne Strousroup

Concordia University Department of Computer Science and Software Engineering Introduction to C++: Principles and goals Joey Paquet, COMP Advanced Program Design with C++ Bjarne Stroustrup describes some principles that he used for the design of C++: Statically typed, general-purpose language, as efficient and portable as C Direct and comprehensive support for multiple programming styles (procedural programming, data abstraction, object-oriented programming, and generic programming) Give the programmer choice, even if this makes it possible for the programmer to choose incorrectly As compatible with C as possible, providing a smooth transition from C Avoid features that are platform specific or not general purpose Not incur overhead for features that are not used Function without a sophisticated programming environment Goals: Augment C with the notion of classes and inheritance Keep the same performance as C Keep same applicability as C

Concordia University Department of Computer Science and Software Engineering Stroustrup began to work on C++ in The idea of creating a new language originated from Stroustrup's experience in programming for his Ph.D. thesis. Stroustrup found that Simula had features that were very helpful for large software development, but the language was too slow for practical use. Remembering his Ph.D. experience, Stroustrup set out to enhance the C language with Simula-like features. C was chosen because it was general-purpose, fast, portable and widely used. Besides C and Simula, some other languages that inspired him were ALGOL 68, Ada, CLU and ML. Introduction to C++: History, versions Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Initial modifications to C included (1980): type checking and conversion for function parameters classes: data structures (struct) encapsulating functions derived classes (inheritance) public/private access modifiers constructors/destructors friend classes Later added (1981): inline functions default function parameters overloading of assignment operator The resulting language was named "C with Classes“ Further evolutions ( ): virtual methods and dynamic binding mechanism method and operator overloading reference types After this, the language was renamed as “C++”. Introduction to C++: History, versions Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Commercial implementations: Release 1.0 (1985): implemented as a C++ to C language translation system called Cfront Release 2.0 (1989): multiple inheritance, abstract classes, static member functions, const member functions, protected members Release 3.0 (1990): templates exception handling namespaces new type cast operations Boolean type Introduction to C++: History, versions Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Standards: C++98 (1998): First C++ standard C++03 (2003): Minor revision C++11 (2011): Major revision Introduction to C++: History, versions Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Positive aspects: General purpose language Language implementation focus on high performance and lean runtime system Provides both high level abstraction and low-level programming features Popularity and availability of tools Negative aspects: Very large and complex language that requires deep technical knowledge in order to properly use it Its low level capacities and focus on efficiency make it an insecure language Many C++ developments, such as the Standard Template Library add features that add security and abstraction, and free the programmer from low-level programming, but to the detriment of performance compared to C Introduction to C++: Positive and negative aspects Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Factors for popularity: C++ is a superset of C: a C++ compiler can compile C programs, and C code and libraries can be reused in C++ classes and programs C++ was designed for performance similar with C A great number of reliable C++ compilers are available for most platforms C++ was the first object-oriented programming language suitable for the development of large commercial software A very wide array of C++ libraries are available, both for general use and for specialized purposes An extremely great amount of C++ code has been written, which in turn either makes it prone to reuse or binds the developers to the language Introduction to C++: Popularity and significance Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering C++ is widely used in the software industry. In terms of usage, is one of the most popular languages ever created. Some of its application domains include key areas of software development such as systems software, device drivers, application software, embedded software, high-performance server and client applications, video and audio processing, and entertainment software such as video games and computer animation. C++ continues to be one of the preferred programming languages to develop professional applications. The language has gone from being initially mostly Western to attracting programmers from all over the world. Introduction to C++: Popularity and significance Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering Compilers and IDEs Apple Xcode C++ Bloodshed Dev-C++ Code::Blocks Cygwin MINGW - "Minimalist GNU for Windows" GNU CC The LLVM Compiler Infrastructure Microsoft Visual C Sun Studio NetBeans Introduction to C++: Tools Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering General Boost MFC: Microsoft Foundation classes STL: Standard Template Library GUI MFC GUI Qt WxWidgets Introduction to C++: Libraries Joey Paquet, COMP Advanced Program Design with C++

Concordia University Department of Computer Science and Software Engineering International Organization for Standardization. ISO/IEC 14882:1998 Programming languages – C ISO/IEC 14882:1998 Programming languages – C++ International Organization for Standardization. ISO/IEC 14882:1998 Programming languages – C ISO/IEC 14882:1998 Programming languages – C++ International Organization for Standardization. ISO/IEC 14882:1998 Information technology -- Programming languages – C ISO/IEC 14882:1998 Information technology -- Programming languages – C++ Bjarne Stroustrup. A Tour of C++. Addison-Wesley, ISBN-13: Bjarne Stroustrup. The Design and Evolution of C++. Addison Wesley, ISBN: March 1994 Bjarne Stroustrup. A history of C++: In History of programming languages---II, Thomas J. Bergin, Jr. and Richard G. Gibson, Jr. (Eds.). ACM, New York, NY, USA DOI: / Introduction to C++: References Joey Paquet, COMP Advanced Program Design with C++