Skip to content Skip to navigation

Connexions

You are here: Home » Content » Syllabus

Navigation

Lenses

What is a lens?

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

This content is ...

Affiliated with (What does "Affiliated with" mean?)

This content is either by members of the organizations listed or about topics related to the organizations listed. Click each link to see a list of all content affiliated with the organization.
  • VOCW

    This module is included inLens: Vietnam OpenCourseWare's Lens
    By: Vietnam OpenCourseWare

    Click the "VOCW" link to see all content affiliated with them.

Also in these lenses

  • Busbee's Compter Science display tagshide tags

    This module is included inLens: Busbee's Computer Science Lens
    By: Kenneth Leroy BusbeeAs a part of collection: "PROGRAMMING FUNDAMENTALS IN C++ "

    Click the "Busbee's Compter Science" link to see all content selected in this lens.

    Click the tag icon tag icon to display tags associated with this content.

Recently Viewed

This feature requires Javascript to be enabled.

Tags

(What is a tag?)

These tags come from the endorsement, affiliation, and other lenses that include this content.
 

Syllabus

Module by: Dr Duong Tuan Anh. E-mail the author

LETTER TO STUDENTS

This course and this student manual reflect a collective effort by your constructor, the Vietnam Education Foundation, The Massachusetts Institute of Technology (MIT) Open Courseware Project and faculty colleagues within Vietnam and the United States who served as reviewers of drafts of this student manual. This course is an important component of our academic program. Although it has been offered for more than three years, this latest version represents an attempt to expand the ranges of sources of information and instruction so that the course continues to be up-to-date and the methods well suited to what is to be learned.

You will be asked from time to time to offer feedback on how the student manual is working and how the course is progressing. Your comments will inform the development team about what is working and what requires attention. Our goal is to help you learn what is important about this particular field and to eventually succeed as a professional applying what you learn in this course.

Thank you for your cooperation. I hope you enjoy the course.

COURSE INFORMATION

Course name: Programming Fundamentals In C++ (501125)

Semester: Spring Semester 2008

Institute: Faculty of Computer Science And Engineering, Hochiminh City University of Technology, Vietnam.

Credit Hours: 3

Instructor: Dr. Duong Tuan Anh, Associate Professor

Office Location: Faculty of Computer Science and Engineering, Ho Chi Minh City University of Technology, 268 Ly Thuong Kiet, Dist. 10, Ho Chi Minh City.

Office hours: 14:00 – 17:00 Wednesday or by appointment

Tel: 8647256/Ext. 5841;

Fax: (848) 8645137.

Email:dtanh@cse.hcmut.edu.vn.

Website: http://www.dit.hcmut.edu.vn/~dtanh/

Teaching Assistants:

Mr. Nguyen Quoc Viet Hung (nqvhung@cse.hcmut.edu.vn)

Mr. Ly Hoang Hai (lhhai@cse.hcmut.edu.vn)

Mr. Nguyen Xuan Minh (nxminh@cse.hcmut.edu.vn)

Mr. Nguyen Van Doan (nvdoan@cse.hcmut.edu.vn)

COURSE DESCRIPTION

This course is a comprehensive introductory course that is intended for students who have no background in computer programming. This course provides basic knowledge and skills on programming with two important programming paradigms: structured programming and object-oriented programming. The course covers structured programming paradigm in depth and introduces just some basics on object-oriented programming. The programming language used in this programming course is C++.

COURSE OBJECTIVES

Upon successful completion, students will be able to:

  1. Design algorithmic solutions to problems.
  2. Translate a specified algorithm into correct self-documented C++ code using generally accepted programming style. In accomplishing this translation, the student shall be able to apply the structured programming mechanisms of C++ including sequence, selection, iteration, recursion, pointers and arrays.
  3. Acquire an understanding of basic object-oriented concepts and the issues involved in effective class design.
  4. Write C++ programs that use:
    • arrays
    • structures
    • pointers
    • object-oriented concepts such as information hiding, constructors, destructors, inheritance.

INTRUCTOR OBJECTIVES

In order to meet the course objectives, the students are expected to fulfill the following requirements:

  • Class attendance must be more than 75%.
  • For each chapter, the students should complete at home a sufficient amount of exercises given for the chapter. All the exercises are given in Programming Fundamentals in C++ - Lecture Notes and Exercises, available at the instructor’s website.
  • Lab work participation is mandatory. At each lab session, the students must complete a sufficient amount of assignments assigned for that lab session. Lab assistants will evaluate the performance of each student at the end of each lab session.
  • There are two programming projects each student is required to produce solutions. These projects aim to train the student’s creativity and problem-solving skills. Project 1 aims to apply all the knowledge in the six first chapters and Project 2 aims to apply those of 2 last chapters. Due date of each project must be respected. Unless it is extremely exceptional, late submission is not accepted.

COURSE DURATION

This course is one semester long, meeting from February 18th through May 29th. Our semester is 16 weeks long. The course meets for three period lecture session and two period lab session. It consists of 42 periods for lectures and 28 periods for lab works (1 period = 45 minutes).

COURSE OUTLINE

Chapter 1: Introduction to Computer and Programming

  1. Hardware and software
  2. Programming languages
  3. Problem solving and software development
  4. Algorithms

Chapter 2: Basic Elements in C++

  1. Program structures
  2. Data types, and operators
  3. Variables and variable declarations
  4. Integer quantifiers
  5. Focus on problem-solving

Chapter 3: Completing the Basics

  1. Assignment operators
  2. Formatting numbers for program output
  3. Using mathematical library functions
  4. Program input using the cin object
  5. Symbolic constants

Chapter 4: Selection Structures

  1. Selection criteria
  2. The if-else statement
  3. Nested if statement
  4. The switch statement
  5. The enum specifier

Chapter 5: Repetition Structures – Arrays and Structured Programming

  1. Basic loop structures
  2. while loops
  3. Interactive while loops
  4. for loops
  5. Nested loops
  6. do-while loops
  7. Structured programming with C++
  8. Arrays
  9. Structures

Chapter 6: Functions and Pointers

  1. Function and parameter declarations
  2. Returning values
  3. Variable scope
  4. Variable storage class
  5. Passing by reference
  6. Recursion
  7. Passing arrays to functions
  8. Pointers
  9. The typedef declaration

Chapter 7: Introduction to Classes

  1. Classes
  2. Information hiding
  3. Member functions
  4. Dynamically Memory Allocation with operators new and delete
  5. Pointers as class members

Chapter 8: Object Manipulation - Inheritance

  1. Advanced constructors
  2. Destructors
  3. Constant objects
  4. Inheritance

LAB WORK

This course maintains a laboratory for its students. During semester, a group of lab assistants hang out in lab to answer students’ questions and help them in debugging. There are 10 lab sessions in the course and the first lab session starts at the third week of the semester. For each lab session, which is 3 period long, the students are requested to finish at least some required assignments. Notice that lab assistants will grade the performance of each student at the end of each lab session. Lab assistants inspect the working of student programs and ask questions on their program codes in order to grade the student lab performance in each lab session.

Lab work materials

Lab assignments for all lab sessions are given in Programming Fundamentals in C++ -Laboratory Manual, which is available in the instructor’s web site.

System requirement

This course is designed to be delivered in an environment supporting a C++ compiler. There is supplementary information included about the Visual C++ 6.0 development environment.

INSTRUCTIONAL METHODS

To facilitate the goal of making C++ accessible as a first-level programming course, the following instructional methods are used in this course.

End-of-Chapter Exercises. Every chapter in the Lecture Notes contains several diverse skill-builder and programming exercises. Students are encouraged to do all the exercises after each chapter. Solutions to some of them are provided by instructor or teaching assistants in the class.

Focus on Problem Solving. In the Chapter 2, 3, 4 and 7, each chapter contains a Focus on Problem Solving section with one complete problem per chapter. Each application is used to demonstrate effective problem solving within the context of a complete program solution. Two programming projects – one for structured programming paradigm and one for object-oriented programming paradigm will ask each student to write larger programs in order to help students to enhance their problem-solving skills.

Pseudocode Descriptions. Pseudocode is stressed throughout the course. Flowchart symbols are described, but are only used when visually presenting flow-of-control constructs.

Gentle Introduction to Object-Oriented Programming. In the course, there are two chapters (7and 8) that provide a “mini-course” introduction to basic object-oriented programming concepts and design techniques. Object oriented design techniques are illustrated in details in a Focus on Problem Solving section of Chapter 7 with one complete application. For more advanced features of object-oriented programming in C++, another course named “Object-Oriented Programming” which is offered one semester later will cover.

EVALUATION AND GRADING SYSTEMS

The final grade of each student shall be calculated by means of a weighted average as follows:

Lab works and programming projects: 30%

Midterm examination: 20%

Final examination: 50%

Lab work and project evaluation:

Lab work evaluation is based on lab work performance of all 10 lab sessions. Project evaluation is based on the working of 2 programming projects. Sample topics for programming projects are given in the last pages of Programming Fundamentals in C++ -Laboratory Manual, which is available in the instructor’s web site.

Lab assignments and projects are evaluated using the following grading criteria:

-correctness: 40%

- appropriate use of arrays/structures/pointers/functions and/or classes: 25%

- program structure (including efficiency): 10%

- program style: 10%

- documentation: 10%

- format of output: 5%

Scores are given in the range from 0 to 10 (rounded to 0.5) with the following interpretation:

Figure 1: Grading system
Figure 1 (graphics1.png)

Exams

Exams are closed-book exams. Exams include one or more of: short answer, multiple choice, trace the given code, debug the given code or given a problem description, produce a solution in the form of a short program or a function(s).

The problems given in the exams are like those on exercises and lab work. The students who spend more time and effort in doing exercises and lab assignments will certainly have better performance in the exams. Exam scores are given in the range from 0 to 10.

COURSE MATERIALS

Lecture Notes, Exercises, Laboratory Manual

Available at the instructor’s website.

Text book:

[1] G. J. Bronson, Program Development and Design Using C++, 3nd Edition, Brooks/COLE Thomson Learning, 2006.

(All lecture notes and exercises used in this course are mainly from this textbook. Students can find more C++ language features, problem-solving guidelines as well as good exercises and assignments from this book for further self-study.)

Reference books:

[2] H. M Deitel and P. J. Deitel, C++ How to Program – 3rd Edition, Prentice-Hall, 2001.

(This book contains a lot of good C++ programming examples. All examples in this book are very well explained.)

[3] J. Farrel, Object-Oriented Programming Using C++, 2nd Edition, Course Technology/Thomson Learning, 2001.

(If students want to go in depth in object-oriented programming with C++, they will find this book very helpful.)

[4] D. Gosselin, Microsoft Visual C++ 6.0, Course Technology/Thomson Learning, 2001.

(This book is a supplementary text for the students who want to know more about Microsoft Visual C++ 6.0 programming environment.)

CALENDAR

There are 16 sessions which compose of 14 lectures, 1 mid-term exam and 1 final exam.

Figure 2: Course calenda
Figure 2 (graphics2.png)

END-OF-COURSE EVALUATION

To continuously improve course content and design, students are requested to complete end-of-course evaluation form. The student comments will be carefully reviewed and used to improve the quality of the course. Please take a moment to complete the following end-of-course feedback form.

OVERALL

  1. Rate your overall satisfaction with the course.

______Very Satisfied

______Satisfied

______Neutral

______Dissatisfied

______Very Dissatisfied

  1. Rate the course in terms of meeting your educational needs.

______Very Satisfied

______Satisfied

______Neutral

______Dissatisfied

______Very Dissatisfied

  1. Based on the knowledge/skill you require to do your job, how would you want to change this course?

----------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------

COURSE CONTENT

  1. Rate the course in terms of meeting the stated objectives.

______Very Satisfied

______Satisfied

______Neutral

______Dissatisfied

______Very Dissatisfied

  1. Rate the course content (e.g., relevance, structure, level of details).

______Very Satisfied

______Satisfied

______Neutral

______Dissatisfied

______Very Dissatisfied

  1. Rate the participative activities (e.g., labs, exercises, projects).

______Very Satisfied

______Satisfied

______Neutral

______Dissatisfied

______Very Dissatisfied

  1. Rate the course materials (e.g., lecture notes, slides, lab manual, textbook).

______Very Satisfied

______Satisfied

______Neutral

______Dissatisfied

______Very Dissatisfied

  1. What topics in the course you like best? Why?
  2. What topics in the course you like least? Why?
  3. Course content comments:

------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------

INSTRUCTION

  1. Rate the instructor’s subject knowledge.

______Very Satisfied

______Satisfied

______Neutral

______Dissatisfied

______Very Dissatisfied

  1. Rate the instructor’s effectiveness (e.g., question handling, presentation, and ability to explain ideas).

______Very Satisfied

______Satisfied

______Neutral

______Dissatisfied

______Very Dissatisfied

  1. Instruction comments:

--------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------

FACILITIES AND EQUIPMENT

  1. Rate the classroom facilities provided (e.g. ventilation, lightning, temperature, space, projector).

______Very Satisfied

______Satisfied

______Neutral

______Dissatisfied

______Very Dissatisfied

  1. Rate the computer lab equipment provided (e.g., computers, software, Internet access).

______Very Satisfied

______Satisfied

______Neutral

______Dissatisfied

______Very Dissatisfied

  1. Facilities and equipment comments:

------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------

SUPPORT

  1. Rate the lab/teaching assistant support. (enthusiasm, effectiveness, knowledge, skill, communication ability).

______Very Satisfied

______Satisfied

______Neutral

______Dissatisfied

______Very Dissatisfied

  1. Support comments.

------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------

Thank you for your comments.

Content actions

Download module as:

PDF | EPUB (?)

What is an EPUB file?

EPUB is an electronic book format that can be read on a variety of mobile devices.

Downloading to a reading device

For detailed instructions on how to download this content's EPUB to your specific device, click the "(?)" link.

| More downloads ...

Add module to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks