LPU - Object Oriented Programming Using C++ - Internship: Six Weeks Summer Training

Download as pdf or txt
Download as pdf or txt
You are on page 1of 22
At a glance
Powered by AI
The document discusses a 6 week summer training program where the author learned Object Oriented Programming using C++.

The document appears to be a report submitted by the author detailing their 6 week summer training program.

The document discusses C++, an object oriented programming language created as an extension of C.

SIX WEEKS SUMMER TRAINING

REPORT

On

LPU - Object Oriented Programming using C++ - Internship

Submitted by

Name: Doki.varun
Registration No:11805404
Programme1: B.Tech CSE

Under the Guidance of

Ebox & Girish Sir

School of Computer Science & Engineering


Lovely Professional University, Phagwara

(June-July, 2020)
DECLARATION

I hereby declare that I have completed my six weeks summer training at Ebox online Course
(name and location of organization) from June 2020 (start date) to May 2020 (end date) under
the guidance of Girish Sir. I have declare that I have worked with full dedication during these
six weeks of training and my learning outcomes fulfill the requirements of training for the
award of degree of BTech CSE (Relevant Degree), Lovely Professional University, Phagwara.

Doki.Varun
11805404

Date: 10/10/2020
ACKNOWLEDGEMENT

I would like to express my special thanks of gratitude to my Ebox Industry Coordinator(Girish


Sir) who gave me a golden opportunity to do this project and also provided support in completing
in my project.

I would also like to extend my gratitude to our Lovely Professional


University for providing me with all the facilities that were required.

Doki.varun
11805404
CERTIFICATE
TABLE OF CONTENTS

1. INTRODUCTION
2. TECHNOLOGY LEARNT
3. REASON FOR CHOOSING THIS TECHNOLOGY
4. LEARNING OUTCOME FROM TRAINING/TECHNOLOGY LEARNT
5. BIBLIOGRAPHY

INTRODUCTION

C++ is a general-purpose programming language created by Bjarne Stroustrup as an extension


of the C programming language, or "C with Classes". The language has expanded significantly
over time, and modern C++ now has object-oriented, generic, and functional features in addition
to facilities for low-level memory manipulation. It is almost always implemented as a compiled
language, and many vendors provide C++ compilers, including the Free Software Foundation,
LLVM, Microsoft, Intel, Oracle, and IBM, so it is available on many platforms.

C++ was designed with a bias toward system programming and embedded, resource-constrained
software and large systems, with performance, efficiency, and flexibility of use as its design
highlights. C++ has also been found useful in many other contexts, with key strengths being
software infrastructure and resource-constrained applications, including desktop applications,
video games, servers (e.g. e-commerce, Web search, or SQL servers), and performance-critical
applications (e.g. telephone switches or space probes).
C++ is standardized by the International Organization for Standardization (ISO), with the latest
standard version ratified and published by ISO in December 2017 as ISO/IEC 14882:2017
(informally known as C++17). The C++ programming language was initially standardized in
1998 as ISO/IEC 14882:1998, which was then amended by the C++03, C++11 and C++14
standards. The current C++17 standard supersedes these with new features and an enlarged
standard library. Before the initial standardization in 1998, C++ was developed by Danish
computer scientist Bjarne Stroustrup at Bell Labs since 1979 as an extension of the C language;
he wanted an efficient and flexible language similar to C that also provided high-level features
for program organization. Since 2012, C++ is on a three-year release schedule, with C++20 the
next planned standard (and then C++23).

Object-oriented design centers on finding an appropriate set of classes and defining their
contents and behavior. It involves determining the proper use set of classes and then filling in
the details of their implementation. Object-oriented design is fundamentally a three-step process:
identifying the classes, characterizing them, and then defining the associated actions.

In this internship, you will discover how to create modular, flexible and reusable software, by
applying object oriented design principles and guidelines. On completion of this internship, you
will have solid knowledge of methods and techniques in Object Oriented Design and
Programming.
TECHNOLOGY LEARNT
The Technology/terms that I had learnt from this course are:
1. Classes and Objects
2. Relationships between classes
3. Inheritance
4. Abstract classes & Interface
5. Collections
6. Exception Handling
7. File Handling
8. String Handling
9. Application Development

REASON FOR CHOOSING THIS TECHNOLOGY

C++ is a general-purpose, object-oriented programming language that was designed by Bjarne


Stroustrup in 1979 to be an extension of the C language. It has the features of imperative, object-
oriented as well as generic programming models. C++ also has some additional facilities to those
in C such as classes, inheritance, default function argument, etc.

C++ plays quite an integral role in modern times as many contemporary systems such as
operating systems, web browsers, databases, etc. have C++ code in at least some part of their
codebase. Moreover, C++ is quite useful in performance critical areas because of its speed.
Reason Why I choosed this course is because of:
1. C++ Popularity and High Salary
C++ is one of the most popular languages in the world. It is used by some
4.4 million developers worldwide. Also, C++ Developers are quite sought after and they hold
some of the most high-paying jobs in the industry with an average base pay of $103, 035 per
year.

2. C++ has Abundant Library Support


C++ has the Standard Template Library(STL) that is very useful as it helps
in writing code compactly and quickly as required. It contains mainly four components i.e.
algorithms, containers, functions, and iterators.

3. C++ has a Large Community


There is a large online community of C++ users and experts that is
particularly helpful in case any support is required. There is a lot of resources like
GeeksforGeeks etc. available on the internet regarding C++. Some of the other online resources
for C++ include StackOverflow, cppreference.com, Standard C++, etc.

4. C++ In Databases
There are many modern day databases such as MySQL, MongoDB,
MemSQL, etc. that are written in C++. This is because C++ is quite modern and it supports
features like exceptions, lambda expressions, etc. Many of the databases that are written in C++
are used in almost all of the in-use applications such as YouTube, WordPress, Twitter, Facebook,
etc.

5. C++ In Operating Systems


All the major operating systems such as Windows, Linux, Android,
Ubuntu, iOS, etc. are written in a combination of C and C++. The Windows applications are
written in C++, while Android applications are written in Java along with C/C++ with non-
default run-times for C++ support. Also, C++ can be used to develop the core of the applications
in iOS.
In general, C or C++ are used in operating systems because of the speed and strongly typed
nature of these languages.

6. C++ In Compilers
C++ is closer to the hardware level and is a comparatively low-level
language. Because of this reason, it is used in many compilers as a backend programming
language. An example of this is the GNU Compiler Collection (GCC) which is currently written
mostly in C++ along with C.

7. C++ In Web Browsers


A lot of web browsers are developed using C++ such as Chrome,
Firefox, Safari, etc. Chrome contains C++ in the rendering engine, JavaScript engine, and the
UI. Firefox uses mainly in the rendering engine and a little in the UI. Safari also uses C++ in the
rendering engine and JavaScript engine.

All these web browsers and more use C++, particularly in the rendering engines because it
provides the required speed that is necessary for the rendering engines since they need to display
the content at an accelerated rate.

8. C++ In Graphics
Applications requiring graphics such as digital image processing,
computer vision, screen recording programs, etc. use C++ due to its high speed. This can also
include different games that have graphics as a big part of their structure.

9. C++ In Embedded Systems


C++ is closer to the hardware level and so it is quite useful in embedded
systems as the software and hardware in these are closely coupled. There are many embedded
systems that use C++ such as smart watches, MP3 players, GPS systems, etc.
10. C++ is Portable
Programs developed in C++ can be moved from one platform to
another. This is one of the main reasons that applications requiring multi-platform or
multi-device development often use C++.

LEARNING OUTCOME FROM TRAINING/TECHNOLOGY LEARNT

Object-oriented design centers on finding an appropriate set of classes and defining their
contents and behavior. It involves determining the proper use set of classes and then filling in
the details of their implementation. Object-oriented design is fundamentally a three-step process:
identifying the classes, characterizing them, and then defining the associated actions.

In this internship, you will discover how to create modular, flexible and reusable software, by
applying object oriented design principles and guidelines. On completion of this internship, you
will have solid knowledge of methods and techniques in Object Oriented Design and
Programming.

Learnt from Terms:


1. Classes and Objects
C++ is arguably the most versatile language in common use. C++
allows for both high-performance code as well as expressive abstractions and design constructs.
C++'s greatest strength is how scalable it could be, so apps that are very resource intensive are
usually built with it. A member function of a class may be a function that has its definition or its
prototype inside the class definition like several other variable. It operates on any object of the
class of which it's a member, and has access to all or any the members of a class for that object.
A friend function of a class is outlined outside that class' scope however it has the right to access
all private and protected members of the class. You would study member functions and friend
function in C++. Relationships between classes are as vital as the classes themselves. Certainly,
developers ought to be aware of classes — cars and roads, students and universities and also the
relationships that exist between them — cars drive on roads, students are educated at
universities. We explore however relationships may be given an equivalent status as classes.
Constructors are special class functions that performs initialization of each object. The Compiler
calls the constructor whenever an object is created. Constructors initialize values to object
members once storage is allocated to the object. we'll study constructors and destructors in C++.

We should be aware of:

What is a Class from an Object oriented programming standpoint?


What is an Object ?
What does a Class contain ?
How to create an Object ?
How to access data members of a class using Object?
What is Encapsulation?
What are access specifiers?
Accessing Public Data Members
Accessing Private Data Members
Accessing Protected Data Members
Member Functions
Friend Function in C++
What is a relationship and how its established between classes?
Association relationship
Aggregation relationship
Composition relationship
How does cardinality play a role in relationships.
What are Junction tables?
Constructors
Parameterized Constructors
Constructor Overloading
Constructors in array of objects
Constructors with default arguments
Dynamic memory allocation
Array of pointer to objects
Copy Constructor
Friend function and Friend classes
Destructors

you got to have learned regarding classes and Objects, access specifier and Getters and Setters
in C++. Let's use this iExplore section to seek out higher by responsive queries.
So far, we've got information on the necessities of Basic OOPs concepts, classes & Objects. Let's
quickly try few programming exercises, on the basics. We'll begin with creating changes on
some existing code snippets.
To standardize and ease out the coding method, you'd be supplied with some model code. The
problems would target making classes & Objects, writing getters & setters, writing standard code
by defining methods logical implementations. At the tip of the programming session, you must
have a smart grip over making classes, defining attributes, writing little standard
implementations. Also Some Application Programs to go into more deeper into subject.

2. Relationships between classes


Relationships between classes are as vital as the classes
themselves. Certainly, developers ought to be aware of classes — cars and roads, students and
universities and also the relationships that exist between them — cars drive on roads, students
are educated at universities. In this module, we tend to explore however relationships may be
given an equivalent status as classes. At the end of this session, you should be aware of: What
is a relationship and how its established between classes? Association relationship Aggregation
relationship Composition relationship How does cardinality play a role in relationships. What
are Junction tables?
Let's commit to answer some quiz queries to strengthen your knowledge with respect to
numerous relationships and its properties. Theoretically, these concepts appear easier to grasp
and look ostensibly uncomplicated. However, representing them in C++ code would appear to a
frightening task at the start. The main target would revolve around distinguishing the attributes
concerned in relationships yet as representing the cardinality. Also Some Application Programs
to go into more deeper into subject.
3. Inheritance
Inheritance could be a way to utilize once written code again and
again. The class that is inherited is termed base class and therefore the class that inherits is termed
derived class. So when, a derived class inherits a base class, the derived class will use all the
functions that are outlined in base class, therefore creating code reusable. This session would
introduce you to the way to implement the idea of Inheritance in C++.In this, we seek out higher
by responsive queries. Various Code Samples would be present helping you to higher understand
the ideas from implementation posture. Concentrate towards the implementation of overloading.
The problems would target implementing Inheritance in C++ and method overriding. At the tip
of the programming session, you need to have a wise grip over implementing Inheritance. Also
Some Application Programs to go into more deeper into subject.
you should be aware of:
What is Inheritance?
How Inheritance is implemented in C++?
Different types of Inheritance & its code implementation
How to access constructor and methods of a base class?
What is method overriding?
4. Abstract classes & Interface
Polymorphism may be a method of representing one kind
in many ways. Example Your behaviour that's, you behave differently with different person in
several places I mean, to parents you will be smart son, and to a friend you're a buddy and to
lecturers you show some respect. Here your behaviour goes on dynamical with folks you meet.
Abstraction is that the method of showing essential info to user and conceal the rest Example :
suppose you've got an automotive, and you're riding it currently, once you apply break you
recognize that automotive gone a stop however you do not know what's the process happened
once you applied break. You would learn the C++ implementations of the on top of concepts
and additionally the eventualities these ideas would assist you model a much better style. In this
we can trengthen your knowledge with respect to Polymorphism and Abstract Classes. . We'll
begin with creating changes on some existing code snippets, so we tend to conjointly get a good
plan on how Polymorphism and Abstract Classes are implemented in C++ for varied situations.
Numerous problems from the application domain would be out there for follow. Apart from
coding them, you must additionally attempt to modify yourself to spot these eventualities in
alternative applications once you begin coming up with and programming. Also Some
Application Programs to go into more deeper into subject.

you should be aware of:


What is Polymorphism and their types?
Function Overloading
Virtual Functions
Pure Virtual Functions
What is Abstract Class?
5. Collections
The standard template Library (STL) could be a package library for
the C++ programming language that influenced several elements of the C++ Standard Library.
The STL achieves its results through the employment of templates. This approach provides
compile-time polymorphism that's usually a lot of economical than ancient run-time
polymorphism. Modern C++ compilers are tuned to reduce abstraction penalties arising from
significant use of the STL. At the end of this session, you should be aware of: Understand the
necessity of collections, Explore varied STL containers, The way to use List and its methods,
The way to use Set and its methods, The way to use Map and its methods. Since there are several
utility methods out there as a part of these Standard Template Library, it's not humanly attainable
to recollect or explore all the methods. We'll begin with making changes on some existing code
snippets, so we tend to collectively get a decent set up on a way to create / initialize a collection
and perform CRUD [Create — read — Update — Delete] operations on the collection. We write
programs supported Collections in C++. Showcase your skills in solving the problems by using
Standard Template Library(STL) and also the accessible API strategies. Also Some Application
Programs to go into more deeper into subject.

6. Exception Handling
Exception handling is used when the frequency of occurence
of an exception cannot be predicted.
For example, arithmetic exceptions such as division by zero and operating systems use exception
handling to resolve deadlocks, recover from crash and so forth. We get the conceptual
information on exceptions. These queries would provide you with clarity on how exception
handling is enforced in C++. Various Code Samples would be present helping you to higher
understand the ideas from implementation posture. The iDesign part permits you to experiment
and code varied catch scenarios at the start by exploiting the exception classes offered. You may
finally find yourself writing your exception and handling it in your code. Also Some Application
Programs to go into more deeper into subject.
you should be aware of:
What is Exception handling?
Throwing Exception
Catching Exception
Standard Exceptions in C++
Creating custom exceptions.
7. File Handling
File reading and writing form an integral part of any application.
From simple logging to store Objects and Content, file processing plays a key role. C++ has a
very well crafted library referred to as fstream for File processing. This library provides data
types for file handling in C++. We seek out higher by responsive queries. Take a glance to
explore & learn by trying to hunt out answers. Its time to showcase your skills in solving the
problems by using appropriate API methods. Also Some Application Programs to go into more
deeper into subject.
you should be aware of:
fstream library and the data types it provides
Creating/Opening a File
Writing to a File
Reading from a File
Closing a File
Special Operations in a File
8. String Handling
we will Understand what strings are. Understand how to declare
a string. Understand how a string is stored in memory. we will Understand the string functions
defined in string header file. we will Understand the string classes in c++ we will explore strings
in detail. How to declare strings? How to work with strings? How to use predefined string
handling functions? let us take a look at the code samples to gain a better understanding of
strings. In particular, let us learn to handle strings and their operations. String is an array of
characters. In this session, we will solve programming problems that involve extensive string
processing. we will solve programming problems that involve C++ string classes. Also Some
Application Programs to go into more deeper into subject.
9. Application Development
In this Module,we can able to a mini type project or a code of some organization for example
Instasmart. Here,in this module,we use all the modules of above and apply them to get the
code of organization Instamart what they required.

BIBLIOGRAPHY

This is a copy of the Bibliography from C++ Coding Standards, with hyperlinks for your
browsing convenience.

[Abelson96] H. Abelson and G. J. Sussman. Structure and Interpretation of Computer


Programs (2nd Edition) (MIT Press, 1996).
[Abrahams96] D. Abrahams. “Exception Safety in STLport” (STLport website, 1996).
[Abrahams01a] D. Abrahams. “Exception Safety in Generic Components,” in M.
Jazayeri, R. Loos, D. Musser (eds.), Generic Programming: International Seminar on Generic
Programming, Dagstuhl Castle, Germany, April/May 1998, Selected Papers, Lecture Notes in
Computer Science 1766 (Springer, 2001).
[Abrahams01b] D. Abrahams. “Error and Exception Handling” ([Boost] website, 2001).
[Alexandrescu00a] A. Alexandrescu. “Traits: The else-if-then of Types” (C++ Report, 12(4),
April 2000).
[Alexandrescu00b] A. Alexandrescu. “Traits on Steroids” (C++ Report, 12(6), June 2000).
[Alexandrescu00c] A. Alexandrescu and P. Marginean. “Change the Way You Write
Exception-Safe Code—Forever” (C/C++ Users Journal, 18(12), December 2000).
[Alexandrescu01] A. Alexandrescu. Modern C++ Design (Addison-Wesley, 2001).
[Alexandrescu01a] A. Alexandrescu. “A Policy-Based basic_string Implementation” (C/C++
Users Journal, 19(6), June 2001).
[Alexandrescu02a] A. Alexandrescu. “Multithreading and the C++ Type System” (InformIT
website, February 2002).
[Alexandrescu02b] A. Alexandrescu. “Discriminated Unions (I),” “… (II),” and “… (III)”
(C/C++ Users Journal, 20(4,6,8), April/June/August 2002).
[Alexandrescu03a] A. Alexandrescu. “Move Constructors” (C/C++ Users Journal, 21(2),
February 2003).
[Alexandrescu03b] A. Alexandrescu. “Assertions” (C/C++ Users Journal, 21(4), April 2003).
[Alexandrescu03c] A. Alexandrescu and P. Marginean. “Enforcements” (C/C++ Users
Journal, 21(6), June 2003).
[Alexandrescu03d] A. Alexandrescu and D. Held. “Smart Pointers Reloaded” (C/C++ Users
Journal, 21(10), October 2003).
[Alexandrescu04] A. Alexandrescu. "Lock-Free Data Structures" (C/C++ Users Journal,
22(10), October 2004).
[Allison98] C. Allison. C & C++ Code Capsules (Prentice Hall, 1998).
[Austern99] M. H. Austern. Generic Programming and the STL (Addison-Wesley, 1999).
[Barton94] J. Barton and L. Nackman. Scientific and Engineering C++ (Addison-Wesley,
1994).
[Bentley00] J. Bentley. Programming Pearls (2nd Edition) (Addison-Wesley, 2000).
[BetterSCM] Better SCM Initiative website.
[Boost] C++ Boost.
[BoostLRG] “Boost Library Requirements and Guidelines” (Boost website).
[Brooks95] F. Brooks. The Mythical Man-Month (Addison-Wesley, 1975; reprinted with
corrections in 1995).
[Butenhof97] D. Butenhof. Programming with POSIX Threads (Addison-Wesley, 1997).
[Cargill92] T. Cargill. C++ Programming Style (Addison-Wesley, 1992).
[C90] ISO/IEC 9899:1990(E), Programming Languages — C (ISO C90 and ANSI C89
standard).
[C99] ISO/IEC 9899:1999(E), Programming Languages — C (revised ISO and ANSI C99
standard).
[C++98] ISO/IEC 14882:1998(E), Programming Languages—C++ (ISO and ANSI C++
standard).
[C++03] ISO/IEC 14882:2003(E), Programming Languages—C++ (updated ISO and
ANSI C++ standard including the contents of [C++98] plus errata corrections).
[C++TR104] ISO/IEC JTC1/SC22/WG21/N1711. (Draft) Technical Report on Standard
Library Extensions (ISO C++ committee working document, November 2004). This is a near-
final draft of the extensions to the C++ standard library due to be published in 2005, including
shared_ptr.
[Cline99] M. Cline, G. Lomow, and M. Girou. C++ FAQs (2nd Edition) (Addison-Wesley,
1999).
[Constantine95] L. Constantine. Constantine on Peopleware (Yourdon Press, 1995).
[Coplien92] J. Coplien. Advanced C++ Programming Styles and Idioms (Addison-Wesley,
1992).
[Cormen01] T. Cormen, C. Leiserson, R. Rivest, C. Stein. Introduction to Algorithms (2nd
Edition) (MIT Press, 2001).
[CVS] CVS home page.
[Cowan01] C. Cowan, M. Barringer, S. Beattie, and G. Kroah-Hartman. “FormatGuard:
Automatic Protection From printf Format String Vulnerabilities” (Proceedings of the 2001
USENIX Security Symposium, August 2001, Washington, D.C.).
[Dewhurst03] S. Dewhurst. C++ Gotchas (Addison-Wesley, 2003).
[Dinkumware-Safe] Dinkum Unabridged Library documentation (Dinkumware Ltd. website).
[Ellis90] M. Ellis and B. Stroustrup. The Annotated C++ Reference Manual (Addison-
Wesley, 1990).
[Gamma95] E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of
Reusable Object-Oriented Software (Addison-Wesley, 1995).
[GnuMake] Gnu make (Gnu website).
[GotW] H. Sutter. Guru of the Week column.
[Henney00] K. Henney. "C++ Patterns: Executing Around Sequences" (EuroPLoP 2000
proceedings).
[Henney01] K. Henney. "C++ Patterns: Reference Accounting" (EuroPLoP 2001
proceedings).
[Henney02a] K. Henney. “Stringing Things Along” (Application Development Advisor, July-
August 2002).
[Henney02b] K. Henney. “The Next Best String” (Application Development Advisor, October
2002).
[Henricson97] M. Henricson and E. Nyquist. Industrial Strength C++ (Prentice Hall,1997).
[Horstmann95] C. S. Horstmann. “Safe STL” (1995).
[Josuttis99] N. Josuttis. The C++ Standard Library (Addison-Wesley, 1999).
[Keffer95] T. Keffer. Rogue Wave C++ Design, Implementation, and Style Guide (Rogue
Wave Software, 1995).
[Kernighan99] B. Kernighan and R. Pike. The Practice of Programming (Addison-Wesley,
1999).
[Knuth89] D. Knuth. “The errors of TeX” (Software—Practice & Experience, 19(7), July
1989.
[Knuth97a] D. Knuth. The Art of Computer Programming, Volume 1: Fundamental
Algorithms (3rd Edition) (Addison-Wesley, 1997).
[Knuth97b] D. Knuth. The Art of Computer Programming, Volume 2: Seminumerical
Algorithms (3rd Edition) (Addison-Wesley, 1997).
[Knuth98] D. Knuth. The Art of Computer Programming, Volume 3: Sorting and Searching
(2nd Edition) (Addison-Wesley, 1998).
[Koenig97] A. Koenig and B. Moo. Ruminations on C++ (Addison-Wesley, 1997).
[Lakos96] J. Lakos. Large-Scale C++ Software Design (Addison-Wesley, 1996).
[Liskov88] B. Liskov. “Data Abstraction and Hierarchy” (SIGPLAN Notices, 23(5), May
1988).
[Martin96a] R. C. Martin. “The Dependency Inversion Principle” (C++ Report, 8(5), May
1996).
[Martin96b] R. C. Martin. “Granularity” (C++ Report, 8(9), October 1996).
[Martin96c] R. C. Martin. “The Open-Closed Principle” (C++ Report, 8(1), January 1996).
[Martin98] R. C. Martin, D. Riehle, F. Buschmann (eds.). Pattern Languages of Program
Design 3 (Addison-Wesley, 1998).
[Martin00] R. C. Martin, “Abstract Classes and Pure Virtual Functions” in R. C. Martin (ed.),
More C++ Gems (Cambridge University Press, 2000).
[McConnell93] S. McConnell. Code Complete (Microsoft Press, 1993).
[Metrowerks] Metrowerks.
[Meyer00] B. Meyer. Object-Oriented Software Construction (2nd Edition) (Prentice Hall,
2000).
[Meyers96] S. Meyers. More Effective C++ (Addison-Wesley, 1996).
[Meyers97] S. Meyers. Effective C++ (2nd Edition) (Addison-Wesley, 1997).
[Meyers00] S. Meyers. “How Non-Member Functions Improve Encapsulation” (C/C++
Users Journal, 18(2), February 2000).
[Meyers01] S. Meyers. Effective STL (Addison-Wesley, 2001).
[Meyers04] S. Meyers and A. Alexandrescu. “C++ and the Perils of Double-Checked
Locking, Part1” and “…Part 2” (Dr. Dobb’s Journal, 29(7,8), July and August 2004).
[Miller56] G. A. Miller. “The Magical Number Seven, Plus or Minus Two: Some Limits on
Our Capacity for Processing Information” (The Psychological Review, 1956, vol. 63).
[MozillaCRFAQ] “Frequently Asked Questions About mozilla.org’s Code Review Process”
(Mozilla website).
[Murray93] R. Murray. C++ Strategies and Tactics (Addison-Wesley, 1993).
[Musser01] D. R. Musser, G. J. Derge, and A. Saini. STL Tutorial and Reference Guide, 2nd
Edition (Addison-Wesley, 2001).
[Parnas02] D. Parnas. “The Secret History of Information Hiding” (Software Pioneers:
Contributions To Software Engineering, Springer-Verlag New York, 2002).
[Peters99] T. Peters. "The Zen of Python." (comp.lang.python, June 1999).
[Piwowarski82] P. Piwowarski. “A Nesting Level Complexity Measure” (ACM
SIGPLAN Notices, 9/1982).
[Saks99] D. Saks. “Thinking Deeply,” “Thinking Deeper,” and “Thinking Even Deeper”
(C/C++ Users Journal, 17(4,5,6), April, May, and June 1999).
[Schmidt01] D. Schmidt, M. Stal, H. Rohnert, F. Buschmann. Pattern-Oriented Software
Architecture, Volume 2: Patterns for Concur-rent and Networked Objects (Wiley, 2001).
[SeamonkeyCR] “Seamonkey Code Reviewer’s Guide” (Mozilla website).
[Sedgewick98] R. Sedgewick. Algorithms in C++, Parts 1-4: Fundamentals, Data
Structure, Sorting, Searching (3rd Edition) (Addison-Wesley, 1998).
[STLport-Debug] B. Fomitchev. “STLport: Debug Mode” (STLport website).
[Stroustrup94] B. Stroustrup. The Design and Evolution of C++ (Addison-Wesley, 1994).
[Stroustrup00] B. Stroustrup. The C++ Programming Language (Special 3rd Edition) (Addison-
Wesley, 2000).
[Sutter99] H. Sutter. “ACID Programming” (Guru of the Week #61).
[Sutter00] H. Sutter. Exceptional C++ (Addison-Wesley, 2000).
[Sutter02] H. Sutter. More Exceptional C++ (Addison-Wesley, 2002).
[Sutter03] H. Sutter. “Generalizing Observer” (C/C++ Users Journal, 21(9), September
2003).
[Sutter04] H. Sutter. Exceptional C++ Style (Addison-Wesley, 2004).
[Sutter04a] H. Sutter. “Function Types” (C/C++ Users Journal, 22(7), July 2004).
[Sutter04b] H. Sutter. “When and How To Use Exceptions” (C/C++ Users Journal, 22(8),
August 2004).
[Sutter04c] H. Sutter. “‘Just Enough’ Thread Safety” (C/C++ Users Journal, 22(9),
September 2004).
[SuttHysl01] H. Sutter and J. Hyslop. “Hungarian wartHogs” (C/C++ Users Journal, 19(11),
November 2001).
[SuttHysl02] H. Sutter and J. Hyslop. “A Midsummer Night’s Madness” (C/C++ Users
Journal, 20(8), August 2002).
[SuttHysl03] H. Sutter and J. Hyslop. “Sharing Causes Contention” (C/C++ Users Journal,
21(4), April 2003).
[SuttHysl04a] H. Sutter and J. Hyslop. “Getting Abstractions” (C/C++ Users Journal, 22(6),
June 2004).
[SuttHysl04b] H. Sutter and J. Hyslop. “Collecting Shared Objects” (C/C++ Users Journal,
22(8), August 2004).
[Taligent94] Taligent’s Guide to Designing Programs (Addison-Wesley, 1994).
[Tsai01] T. Tsai and N. Singh. “Libsafe 2.0: Detection of Format String Vulnerability
Exploits” (Avaya Labs, March 2001).
[Vandevoorde03] D. Vandevoorde and N. Josuttis. C++ Templates (Addison-Wesley,
2003).
[Webber03] A. B. Webber. Modern Programming Languages: A Practical Introduction
(Franklin, Beedle & Associates, 2003).

Thank You,
Ambati Sai Harriesh,
11801549.

You might also like