Internet Distance Learning
in C++
Chapters 1, 2, 3 and 5
Read the chapter
complete the workbook and
take the on line tests
Chapter 4 Assignments
Chapter 6 Assignments
Chapter 7 Assignments
Chapter 8 Assignments
Chapter 9 Assignments
Chapter 10 Assignments
Chapter 11 Assignments
Chapter 12 Assignments
Chapter 13 Assignments
Chapter 14 Assignments
Chapter 15 Assignments
Chapter 16 Assignments
Chapter 17 Assignments
Chapter 18 Assignments
Chapter 19 Assignments
Back to Computer Science Home Page
Internet Distance Education in Advanced Placement Computer Science
The goals of an Advanced Placement course in computer science are comparable to those in the introductory sequence of courses for computer science majors offered in college and university computer science departments. It is not expected, however, that all students in an AP Computer Science course will major in computer science at the university level. An AP Computer Science course is intended to serve both as an introductory course for computer science majors and as a course for people who will major in other disciplines that require significant involvement with computing.
The Advanced Placement Program offers descriptions of two computer science courses: Computer Science A and Computer Science AB. The content of Computer Science A is a subset of the content of Computer Science AB. Computer Science A emphasizes programming methodology and procedural abstraction. It also includes the study of algorithms, data structures, and data abstraction, but these topics are not covered to the extent that they are covered in Computer Science AB. For a comparison of the topics covered, see the outline below. AP Computer Science teachers require a familiarity with the topics and the programming language used in the course.
We here at Kittatinny have the expertise on staff to teach both the A and AB Computer science course. Most other schools in the area are not so fortunate. There is a significant shortage of qualified Computer Science teachers. Those schools whose faculty members have not yet developed sufficient expertise to cover the material in Computer Science have been forced to forgo Computer science courses. The new communication capabilities provided by the Internet provide an opportunity to alleviate the problem. Students here at Kittatinny as well as students in other high schools can receive lesson plans, submit assignments, e-mail questions and take tests all via the Internet. Kittatinny will host students from virtually anywhere and grant credit to anyone successfully completing the course. This credit could then be transferred to the student's home district. This type of program has been successfully implemented by the Internet Distance Education Associates and has been adopted for use here at KRHS.
Kittatinny is what is known as a host site. A calendar of assignments and due dates will be published here on our Internet web site. Students at our school and at other remote schools will be expected to complete the assignments and e-mail them to webmaster@krhs.net for grading. Tests will be taken at the Internet Distance Education site at www.studio-cplus.com and request that the results be . This teacher wwebmaster at the ill not will be dents with the logistihaveonnecting to the Internet and installing the required will be e-mailed to the KRHS host site. The remote sites will require a facilitating teacher to necessarily have a great deal of familiarity with C++ or Computer Science but will assist in grading student work and maintain a full set of records of student progress. Any questions that the facilitating teacher cannot answer should be referred to the host teacher for clarification. In order for a school to participate as a facilitating site it will require the following.
The facilitating teacher will need the IDE teacher package containing the teachers edition of the text and workbook as well as the required software and a guide to starting the program.
The topics covered in the course outline and a full discussion of course implementation are discussed below.
| Program Design | Program Implementation | Program Analysis | Data Structures | Algorithms | Computer Systems |
| Goals | Required Equipment | Grading | Teachers | Prerequisites | NJ Core Standards |
Back to Computer Science Home Page
The attached course outline will be used with the text, and workbook on Introduction to Computer Science Using C++ by Todd Knowlton - South Western Publishing Company. Each student will also need a Visual C++ workstation license and an Internet test record card to complete the course. These can all be obtained through the Internet Distance Education (IDE) student add-on package.
The following is an outline of the major topics covered by this course. It is identical to the outline for the AP Examination in Computer Science. The ordering here is intended to define the scope of the course, but not necessarily the sequence. The topics highlighted with an asterisk * are on the AB Exam but are not tested on the Computer Science A Examination and will be covered only if there is time and after all others listed.
The overall goal for designing a piece of software (a computer program) is to solve the given problem correctly, but at the same time to specify and design a program that is understandable, can be adapted to changing circumstances, and has the potential to be reused in whole or in part. The design process needs to be based on a thorough understanding of the problem to be solved.
Design process
A. Problem definition
- .Specification of purpose and goals
- .Identification of subtasks to be performed
- .Identification of the Abstract Data Types and operations needed to solve the problem
B. Program design
- .Identification of reusable components from existing code
- .Subprogram decomposition
- .Choice of data structures and algorithms
- .Design of user interface
The overall goals of program implementation parallel those of program design. Modules of the program that fill common needs should be built so that they can be reused easily in other programs. Control and data abstraction are important parts of program implementation.
A. Implementation techniques
1. Methodology
a. Top-down development (including use of stub subprograms)
b. Bottom-up development
2. Use of abstraction
- a. Control abstraction
- b. Data abstraction
- i. abstract data types
- ii. encapsulation and information hiding,
B. Programming constructs
1. Input and output
- a. Interactive
- b. Files
2. Control
- a. Sequential
- b. Conditional
- c. Repetition
- i Iteration
- ii Recursion
The analysis of programs includes analyzing and testing programs to determine whether they correctly meet their specifications. It also includes the analysis of programs or the algorithms they implement so as to understand their time and space requirements when applied to different data sets.
A. Testing
- Testing modules in isolation
- Identifying boundary cases and generating appropriate test data
- Integration testing
B. Debugging
- Categorizing errors-syntax, run-time, logic
- Identifying and correcting errors
- Techniques-using a debugger, adding extra output statements, hand-tracing
C. understanding, and modifying existing code
D. handling errors
- .Robust. Behavior
- .Exception Handling *
E. Reasoning about programs
- .Pre/post conditions
- .Assertions
- .Invariants *
F. Analysis of algorithms
- .Informal comparisons of running times
- .Exact calculation of statement execution counts
- .Big-0 notation *
- .Worst case/average case time and space analysis *
G. Numerical limits
- .Limitations of finite representations. (e.g. Integer bounds, floating point representation and round off errors)
Data structures are the means by which the information used by a program is represented within the program. An important theme of the development and application of data structures is abstraction.
- Simple data types(e.g., integer, char, boolean, real)
- Records
- Arrays
- Linked lists *
- Stacks *
- Queues *
- Trees *
Standard algorithms cam serve as examples of good solutions to standard problems. Programs implementing them can serve as models of good program design. They provide examples for analysis of program efficiency. Many are intertwined with standard data structures
A. Searching
- .Sequential (Linear)
- .Binary
- .Hashing *
B. Sorting
- .Selection
- .Insertion
- .Merge sort
- .Quick sort
- .Heap sort *
C. Operations
- .Insertion
- .Deletion
- .Traversals
D. Operations on Dynamic data structures *
- .Insertion *
- .Deletion *
- .Traversals *
A working knowledge of the major hardware and software components of computer systems is necessary for- the study of' computer science as is the importance of considering the ethical and social implications of computing systems. These topics need not be covered in detail but should be considered throughout the course.
A. Major hardware components
- .Primary and secondary memory
- .Processors
- .Peripherals
B. System software
- .Language translators
- .Separate compilation
- .Operating systems
C. Types of systems
- .Single-user systems
- .Networks
D. Responsible use of computer systems
- .System reliability
- .Privacy
- .Legal issues and intellectual property
- .Social and ethical ramifications of computer use
Structured problem solving is emphasized throughout this course, and problem solutions are functionally decomposed with the aid of structure charts.
This course will cover all required topics to enable students to choose to take the Advanced Placement exam in Computer Science starting in May of 1999.
Goals and Objectives of the AP Computer Science Course
The content of the college introductory programming course has evolved significantly over the years. Current offerings of the AP Computer Science Examination require the use of Pascal however, the AP Computer Science Examinations will require knowledge of the programming language C++ beginning with the 1999 Examination (i.e., the 1998-99 academic year). The examination will continue to cover the fundamentals of computer science taught in first-year college courses. However, those sections of the exam that require the reading or writing of actual programs will use C++ rather than Pascal. For this reason this course will incorporate writing programs using the C++ language.
Students should have access to a computer system that represents relatively recent technology. The system should be able to compile Visual C++ programs of size comparable to the AP Computer Science case study (roughly 500 lines of code) in a matter of seconds, and response time should be reasonably rapid. This will most likely require hard disk drives, either on individual machines or shared via a network. Internet access will be required to enable students to submit projects, take tests and communicate with the host site.
Each student in the course should have a minimum of three hours per week alone on a computer throughout the academic year although additional time is desirable. This access can be made available at any time during the school day or after school and need not be made available to all students in the course simultaneously. It should be stressed that this requirement represents a bare minimum of access, and this time is not instructional time spent with a facilitator, studying the text or completing workbook assignments but is time alone at a computer in addition to the instructional time. Schools may wish to structure classes, much like those in the laboratory sciences, with a regular opportunity for the student to have time alone at a computer as well as time periods of individual instruction with the facilitator. Schools that do not allow their facilities to be used after school hours may wish to reevaluate this policy in light of the needs of their students who take this course.
This course will require the programming language C++. Schools will have to acquire C++ compiler software and, in some situations, upgrade the operating system. Although any C++ compiler can be used, the IDE Teacher's package includes the Microsoft Visual C++ compiler program on CD. This is the compiler that will be used by students at the host site. Student packages contain the necessary license for the student to legally use the software. Schools with older hardware may need to update the memory and/or the processors in their lab machines so that students will be able to compile C++ programs efficiently. At a minimum, the hardware configuration will need large hard drives and sufficient memory to support current operating systems and compilers. Although it is dangerous to make recommendations about minimum sizes because technology changes at a rapid rate, current operating systems and compilers run best with at least 16 MB of RAM and large (500 MB-2 GB) hard drives. CDROM drives are recommended since many compilers and operating systems are easier to install from a CD-ROM.
The following is a description of the course and its proficiencies.
A. Proficiency for a given marking period will be determined according to the following procedures:
1. The letter grade given to each student has the following equivalent percentage range, based upon demonstrated proficiencies:
- A - Excellent (90 - 100)
- B - Good (80 - 90)
- C - Average, Fair (70 - 79)
- D - Poor, but pass (60 - 69)
- F - Failure (0 - 59)
B. Final level of proficiencies in the course will be determined and assigned grades according to the following procedures:
Students will be given a grade for each chapter in the text.
The chapter grade will consist of the following.
- 30% Workbook Assignments
- 40% Programming Projects
- 30% Chapter Test (via the Internet)
Workbook assignments will be submitted to the course facilitator for grading. Programming project source code will be e-mailed to webmaster@krhs.net for grading. The graded and commented source code will be returned to both the student and facilitator via e-mail. The chapter tests will be taken via the Internet at (www.studio-cplus.com). Students will log in to the site, take the on line test and send the results via e-mail to the host site. A copy of the results will be forwarded to the facilitating site. Both the host and facilitating site will maintain a copy of all grades and records. The host teacher and the facilitating teacher will compare their copies on a regular basis to ensure the records are accurate. The final grade for the course will be the average of all chapter grades. A Final Exam will be made available for those schools where one is required.
Teachers/Facilitators of the Course
The host site will provide all the information required by the facilitating teachers. The facilitating teacher should be prepared to deal with a college-level first course in computer science. They should be willing to become slightly familiar with the C++ programming language and if the facilitator is willing, optionally prepare to become a host site. The emphasis in these courses is on procedural and data abstraction, programming methodology, algorithms, and data structures.
The necessary prerequisites for entering either one of the AP Computer Science courses include a familiarity with mathematical notation at the level of a second course in algebra, experience in problem solving, and an appreciation of the need to structure and develop a given topic in a logical manner. A student in the AP Computer Science course should be comfortable with functions and the concepts often found in the uses of functional notation such as f(x)=x+2 and f(x)=g(h(x)). It is important that students understand that any significant computer science course builds upon a foundation of mathematical reasoning that should be acquired before attempting such a course.
This course will cover the topics in the Computer Science A level course. Those students who wish to take the Computer Science AB test should have some prior programming experience so that they can move at a faster pace to study the topics covered by the Computer Science AB outline and then to take the AP Examination in Computer Science AB rather than just the Examination in Computer Science A. The background of the student must be taken into consideration in making this decision .
One prerequisite for an AP Computer Science course-competence in written communication-deserves special attention. Documentation plays a central role in the programming methodology that forms the heart of an AP Computer Science course. Students should have already acquired facility in written communication before entering this course.
New Jersey Core Curriculum Contents Standards
The Core Curriculum content Workplace Readiness Standards sections 1, 2 ,3 and 4 are all addressed in completing this course.
STANDARD1
ALL STUDENTS WILL DEVELOP
CAREER PLANNING AND
WORKPLACE READINESS SKILLS.
Descriptive Statement: Students will be expected to develop the skills to seek, obtain, maintain, and change jobs. These skills are critical to each student's future ability to navigate in the complex world of work. Prior to leaving school, each student should possess the skills needed to sustain him/herself as an adult in the labor force.
Cumulative Progress Indicators
All students will be able to:
STANDARD 2
ALL STUDENTS WILL USE INFORMATION, TECHNOLOGY, AND OTHER TOOLS.
Descriptive Statement: Students will be expected to develop skills in the use of information, up-to date educational technology, and other tools to improve learning, achieve goals, and produce products and presentations. They will learn to develop, locate, summarize, organize, synthesize, and evaluate information. Students will be expected to use technological tools, such as telecommunications networking, for problem-solving, writing, and research.
Cumulative Progress Indicators
All students will be able to:
STANDARD 3
ALL STUDENTS WILL USE CRITICAL THINKING, DECISION MAKING, AND PROBLEM-SOLVING SKILLS.
Descriptive Statement: Students will be expected to develop original thoughts and ideas, think creatively, develop habits of inquiry, and take intellectual and performance risks. They will be expected to recognize problems, devise a variety of ways to solve these problems, analyze the potential advantages and disadvantages of each alternative, and evaluate the effectiveness of the method ultimately selected.
Cumulative Progress Indicators
All students will be able to:
STANDARD 4
ALL STUDENTS WILL DEMONSTRATE SELF MANAGEMENT SKILLS.
Descriptive Statement: Students will be expected to address issues related to personal development, such as accepting responsibility for their own learning and understanding expectations for performance. They are also expected to demonstrate positive work behaviors and ethics, the ability to work individually and cooperatively in groups, and respect for others of diverse cultural and social backgrounds.
Cumulative Progress Indicators
All students will be able to: