Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

C++ Programming, X412.1

2 Semester Units in EECS

Course Description

In this course, we'll explore and learn about one of the most popular programming languages used today. Whether you are here as a novice programmer or as an experienced programmer learning a new language, welcome.

Prerequisites

Prerequisites: Introduction to C Language Programming, X24 OR reasonable knowledge of the C programming language, including familiarity with C data types, structures, and arrays; decision and looping constructs; use of pointers; and defining and invoking functions.

This course is designed for anyone with a moderate knowledge of the C programming language. It provides a comprehensive introduction to the C++ language. All major C++ language features are covered, including advanced topics such as exception handling and use of templates. Fundamental concepts of object-oriented programming are introduced. Issues of efficiency, portability, and maintainability are discussed.

Don't panic if you're a bit rusty on your C or if you think your background might be a little shaky. The first module of this course is a review of important C topics that will also help level the playing field for all students by providing a common knowledge base from which we will proceed into the real substance of the course.

Learning Outcomes

After successfully completing this course, you will be able to

· understand all C++ syntactic constructs;

· understand essential routines in the standard C++ class libraries;

· be able to write small to moderate-sized C++ programs, including projects which span multiple source files;

· know how to write classes that "fit the mold," that is, that conform to C++ programming conventions;

· understand the importance of data abstraction in writing maintainable, portable programs;

· understand fundamental ideas from object-oriented programming; and

· understand tradeoffs when there is more than one C++ approach to a problem.

Course Materials and Technical Requirements

Required Materials

· Prata, Stephen. C++ Primer Plus, 6th ed. Indianapolis, IN: Addison-Wesley, 2012

You are free to purchase your textbooks from any vendor. Please be sure to thoroughly review the return policies before making a purchasing decision as UC Berkeley Extension does not reimburse students for course materials in the event of a textbook change or an unexpected cancellation or rescheduled course section.

Recommended Materials

· Eckel, Bruce. Thinking in C++ Second Edition Volume One: Introduction to Standard C++, Upper Saddle River, NJ: Prentice Hall, 2000, ISBN 0-13-979809-9 (This is an excellent resource and is available free online at http://www.BruceEckel.com.)

· Stroustrup, Bjarne. The C++ Programming Language, 3rd ed. Reading, MA: Addison Wesley Longman Inc., 1997, ISBN: 0201889544

Technical Requirements

This course is built on a Learning Management system (LMS) called Canvas. In order to use Canvas, this is a list of basic computer system requirements.

Optional

Canvas allows you to record audio or video files of yourself and upload them in the course. Although doing so is not required for any of the activities, using these features will enhance your engagement in the course. If you would like to use these features, you will need to have a webcam and a microphone installed on your computer.

 

Learning Activities

This course consists of 11 modules of study outlined at the end of this syllabus.  The coursework for each module consists of

· a reading assignment from the required text;

· one or more suggested readings from the recommended texts;

· reading my commentaries, which provide explanation and examples on each topic;

· short answer questions;

· a programming assignment; and

· a class discussion on the Discussion Assignments forum.

In addition, there will be a final assessment.

Reading & Written Assignments

My commentary on the assigned reading material is included in each module. While reading from the text or my commentary, you should have your C++ IDE up and running so you can follow along with the examples. All the source code for these examples is included in a compressed .zip file that you will download as part of your Module 1 assignment.

After reading the relevant information for each lesson and considering the short answer questions, you may still have questions. Please visit the Student Lounge discussion forum to see if any other students have similar concerns. You may wish to post your questions there. Please also feel free to contact me directly using our course email.

Discussions

We have two discussion forums in our course.

· Discussion Assignments: The Discussion Assignments forum provides a vehicle for classroom interactivity based on questions created specifically for each module. All post are "public," that is, available for all class participants to read and comment on. When a module has one or more discussion assignments, please respond to the questions in a manner that reflects critical thinking. Please feel free, as well, to positively critique and offer leads and suggestions to comments and questions that other students have made.

Each of us brings a unique perspective to this class based upon our life experiences and previous studies. But because of the continuous, open-enrollment nature of this course, at times it might be hard to sustain an actual conversation in the discussion threads with your fellow students. So instead, let's look to the discussion threads as a place to connect our multiple perspectives and construct an evolving knowledge base. The process will enrich your own studies, and the words you leave behind will help students who join the class even after you've gone on to new pursuits.

In Module 1 you'll introduce yourself to your instructor and course mates. For your introduction, I encourage you to use Canvas features to record your voice and/or a video or yourself. You may also click on your name at the top of the course and upload a photo so that your course mates and I can get a better sense of you.

Short Answer Questions

In each module you will answer a series of short answer questions and submit your answers as an attachment to the drop box provided in that module. Please save your answers in a rich text format (.rtf). Be sure to include your name and assignment number in the file name, as such: "Your_name_M1_ShortAnswers.rtf"

Programming Assignments

When submitting programming assignments to a drop box, attach all .cpp and .h files required to compile and execute the program. To allow me to easily compile and execute your program, please do not rename, zip, compress, or combine files. Please follow these rules when attaching:

1. Attach all source code and modules required to compile and run the program (including modules provided in the commentary as part of the assignment).

2. Save source code attachments as .cpp and .h files.

3. Do not compress your attachments. I may not be able to decode your compression.

I may ask you to resend your attachment in a different format if I cannot read it. Please contact me if you need to make other arrangements.

Always keep a copy of your work in case a problem arises. Check returned evaluated assignments carefully, note all comments, and make the suggested corrections. This process will help prepare you for later assignments and the final assessment.

When submitting programming assignments, send your source code only. I will compile your source code myself.

Programming assignments are designed to give you practice with all the important C++ constructs and concepts. Here is a checklist to assist you in submitting correct programming solutions. Please check your programs against this list for completeness before you submit them:

· Program implements the requirements of the assignment.

· Functional decomposition of program is reasonable.

· Function interfaces are well-defined.

· Sample runs are included.

· Sample runs adequately test the program.

· Use #define and avoid the use of magic numbers in the code.

· Gotos have been avoided (except to break from nested loops).

· Appropriate control structures are used.

· Good (mnemonic) variable/function names are used.

· Usage of each variable is documented.

· Assembly-language-style, line-by-line comments have been avoided.

· Comments do not obscure the source code.

· Comments are consistent with the source code.

· Indentation scheme does not detract from readability.

· Indentation scheme is consistent.

Include a header comment for each module, both .cpp and .h files. Here is an example of the minimum that is required:

//********************************************* // FILENAME:   (Name of file and extension  ex: EnglishWeight.cpp) // PROGRAMMER: (Name of person who wrote the code for the module) // DATE:       (Date completed) // COMPILER:   (Compiler used to compile and link program) // REQUIRED:   (Identify all modules required to compile the program) // PURPOSE:    (Brief description of program)

Final Assessment

There is a comprehensive final assessment which will be delivered online. 

· This assessment must be completed by your course end date, which is 180 days from your course enrollment date. The Welcome email that you received lists your official course end date. 

· To be eligible for the assessment, you must have been enrolled in the course for at least 60 days and have completed and received a grade for all assignments.

· In order to pass this course, you must pass the final assessment with a grade of 70% or higher.

 

Communication and Office Hours

While I encourage all of you to use the "Questions about this course?" forum for questions/answers that can benefit all students, of course you can always get in touch with me during the course. You can access course email by clicking on the Inbox link on the Corner Help toolbar (see also Canvas tutorial). You can expect me to respond to email within 2 business days of receiving messages unless I have notified the class otherwise (e.g., because of vacation or other reasons).

Please note: all course communication between students/instructor must occur within the course.

Grading and Course Policies

Final grades will be assigned according to the following percentages:

Short Answer Questions

10%

Programming Assignments

45%

Discussion Assignments

5%

Final Assessment

40%

Table 1: Final Grade Percentages

You must pass the final assessment with a score of 70% or higher to pass the course.

Grading Information

Final grades follow the UC Berkeley grading system:

Letter Grade

A-

B+

B-

C+

C-

D+

D-

Percentage

100-94

93-90

89-86

85-83

82-80

79-76

75-73

72-70

69-66

65-63

62-60

< 60

Table 2: UC Berkeley Grading Systems

To view your final grade and request official transcripts, log in to your student account at extension.berkeley.edu and go to "My Enrollment History."

When I grade your writing assignments, I'll be looking at content, organization, and mechanics. Please keep the following criteria in mind:

 

Poor

Needs Improvement

Meets Expectations

Exceptional

Content

Poor writing style with little or no specific details, no evidence of having studied the material, and/or off topic.

Adequately written; some points elaborated but with minimal use of concepts from the material.

Well written, most points elaborated with clear and detailed information that supports thoughts and ideas and uses concepts from the material.

Well written, fully elaborates points. Clear and detailed information supports thoughts and ideas and shows full acquisition of concepts from the material.

Organization and Mechanics

Little or no structure present. Grammatical errors interfere with comprehension.

Organization present but awkward. Some grammatical errors present.

Good organization with few statements out of place. Minor grammatical errors.

Clearly organized and remains focused. Few or no grammatical errors.

Table 3: Criteria for Writing Assignments

 

In the Discussion Assignments forum, I'll also be looking for evidence of participation:

 

Poor

Needs Improvement

Meets Expectations

Exceptional

Participation

Minimal posts in number or length. Posts show little or no reflection on the topics or previous posts.

Posts address the topic but consist mostly of a rote repetition of the study materials. Little or no reflection on previous posts.

Posts address the topic with reflection. Many responses build on previous posts.

Posts show a genuine interest in contributing to the overall life of the forum.

Table 4: Evidence of Participation for the Discussion Assignments Forum

Late Work Policy
It is your job to complete class readings, assignments, and writings on time. All assignment due dates are listed in the course Calendar, and you are expected to work on only that week's assignments. You may not lag behind or work ahead. Instructors have up to 1 week to grade and return assignments. The instructor must approve any late work ahead of time.

DSP Accommodations

Any student requiring course accommodations due to a physical, emotional, or learning disability must contact the Disabled Student Services (DSS) office right away. Be sure to review our detailed DSP accommodations instructions.

Academic Integrity, Research, and Proper Citation

As an online student, you are encouraged to reach out to your fellow students in the online classroom to discuss materials and ask each other questions, but there are limits to this collaboration. Reviewing lecture and reading materials and studying for exams can be enjoyable and enriching things to do with fellow students. This is recommended. However, unless otherwise instructed, homework assignments are to be completed independently, and materials submitted as homework should be the result of your own independent work.

As a UC Berkeley student you are bound by the UC Berkeley Extension Code of Student Conduct, which clearly defines what constitutes cheating, as well as plagiarism and other forms of academic misconduct.

You will be asked to take your Pledge to Academic Integrity before you can access the course content.

Managing Your Time in the Course

With this course, you have the freedom to design your study time to meet your schedule. However, this style of learning also requires dedication and commitment to ensure that you get the homework and assignments done in a timely fashion. Use these tips to stay on track and get the most from this class.

· Get started as soon as possible: Students who submit their first assignment within the first month are more likely to complete the course than those who delay. Please do not wait to submit everything toward the end of the class. Assume that I will need a week to grade each assignment and provide feedback that will help you complete subsequent assignments.

· Create a planning calendar: Plan your homework and submittal dates, and stick with them. Students who submit assignments regularly are more likely to complete the course than those who do not. Take the time now at the beginning of the course to plan your study time by using the course Calendar tool.

· Ask questions: You are always encouraged to ask questions. Use course mail to ask me questions, ask for feedback, or just to request encouragement. I'm always pleased to be of assistance. Use the Student Lounge forum for general questions about the course or assignments that other students might need answered as well.

· Submit complete assignments: Submit only completed assignments. If you are unsure about a question, e-mail me and ask me first before submitting the assignment. I'm always pleased to be of assistance. Any incomplete assignments will be returned to you to complete and resubmit.

Course Evaluation and Course End Date

Course Evaluation

You are an important part of our community and we value your opinion! Before your course End Date, please take a few minutes to fill out a survey about your experience in this course so that we can continue to improve the online learning environment. Your instructor also values your constructive feedback! Course Evaluations are a valuable way for instructors to gain insight on their online teaching practices.

Toward the end of your course, you will be invited to complete the evaluation through email and through Canvas. Please note that your identity remains confidential during the evaluation process, and evaluation results aren't shared with instructors until after final grades are due. For questions or technical problems with the evaluation process, please email UC Berkeley Extension’s Center for Instructional Excellence at [email protected].

Thank you in advance for sharing your thoughts with us!

Course End Date

Your access to the online classroom will expire on the course End Date, which is indicated in the initial e-mail you received when you enrolled. As you work through the course, please keep the End Date in mind, and if you want to save any commentary or assignments for future reference, please make sure to print or copy/paste those materials before your access ends.

Canvas Tech Support and UC Berkeley Extension Student Services

Canvas Tech Support

The learning management system (LMS) used in this course is Canvas, which has convenient mobile apps for phones and tablets. Part of the orientation materials in your course will help you make sure that your computer is at par with Canvas specifications. Anytime you are in Canvas you can report problems, get support, and search Canvas user guides from the Help link on the top menu bar. Other options:

· Canvas Support 24/7 Hotline:  855-308-2758 

· Email: [email protected]

UC Berkeley Extension FAQs and Student Services

Start at the Student Services page to find help with issues such as the following:

· Course registration

· Refunds, withdrawals, and transfers

· Grade options

· Requests for transcripts or official receipts

If you need further help, Extension's Online Learning pages lists contact information for the academic department.

Course Outline

You'll find complete instructions for your assignments within the course modules.

Module 1: Review of Important Concepts from C

· Read C++ Primer Plus Chapters 1-4

· Read Module 1 Commentary

· Module 1 Short Answers

· Module 1 Programming Assignment

· Module 1 Discussion

Module 2: Continued Review of C Concepts

· Read C++ Primer Plus Chapters 5-9

· Read Module 2 Commentary

· Module 2 Short Answers

· Module 2 Programming Assignment

· Module 2 Discussion

Module 3: Classes

· Read C++ Primer Plus Chapter 10-11

· Read Module 3 Commentary

· Module 3 Short Answers

· Module 3 Programming Assignment

· Module 3 Discussion

Module 4: Dynamic Allocation

· Read C++ Primer Plus Chapter 12

· Read Module 4 Commentary

· Module 4 Short Answers

· Module 4 Programming Assignment

· Module 4 Discussion

Module 5: Conversions

· Read C++ Primer Plus Chapter 13

· Read Module 5 Commentary

· Module 5 Short Answers

· Module 5 Programming Assignment

· Module 5 Discussion

Module 6: Fundamentals of Inheritance

· Read C++ Primer Plus Chapter 14

· Read Module 6 Commentary

· Module 6 Short Answers

· Module 6 Programming Assignment

· Module 6 Discussion

Module 7: Advanced Inheritance

· Re-read C++ Primer Plus Chapter 14

· Read Module 7 Commentary

· Module 7 Short Answers

· Module 7 Programming Assignment

· Module 7 Discussion

Module 8: Exception Handling

· Read C++ Primer Plus Chapter 15

· Read Module 8 Commentary

· Module 8 Short Answers

· Module 8 Programming Assignment

· Module 8 Discussion

Module 9: Templates

· Read C++ Primer Plus Chapters 14 and 16

· Read Module 9 Commentary

· Module 9 Short Answers

· Module 9 Programming Assignment

· Module 9 Discussion

Module 10: Miscellaneous Topics

· Re-Read C++ Primer Plus Chapter 15

· Read Module 10 Commentary

· Module 10 Short Answers

· Module 10 Programming Assignment

· Module 10 Discussion

Module 11: Linked List Example

· Read C++ Primer Plus Chapter 12 - A Queue Simulation

· Read Module 11 Commentary

· Module 11 Short Answers

· Module 11 Programming Assignment

· Module 11 Discussion

Final Assessment