Before this activity is assigned, the students should be introduced to the concepts of online repositories, free and open source software, and to a very limited extent, the use of GitHub. It is not really necessary to know how to use the version control features of GitHub for this activity because the students are not cloning code or uploading it. They can do this activity entirely by browsing the code on-line.

Before this activity is assigned, the students should be introduced to the concepts of online repositories, free and open source software, and to a very limited extent, the use of GitHub. It is not really necessary to know how to use the version control features of GitHub for this activity because the students are not cloning code or uploading it. They can do this activity entirely by browsing the code on-line.

+

+

The activity asks the students to search through the GitHub repository for the class that implements infinite precision decimal numbers. It then asks them to look at the interface file for this class.

+

The particular objectives are to get them to learn something about exploring GitHub, about reading code and comments, about overloaded operators and inline versus non-inline functions.

In terms of their coding knowledge, they should know how to read C++ class interfaces and implementation files, know how to read C++ function definitions, and be able to write C++ programs that use classes. One of the questions asks them to examine a function that is recursive, without stating that it is recursive, and gets them to discover this. Students who have been introduced to recursive C++ functions will have a different response from those who have not.

In terms of their coding knowledge, they should know how to read C++ class interfaces and implementation files, know how to read C++ function definitions, and be able to write C++ programs that use classes. One of the questions asks them to examine a function that is recursive, without stating that it is recursive, and gets them to discover this. Students who have been introduced to recursive C++ functions will have a different response from those who have not.

Line 28:

Line 31:

# ITK (Insight Segmentation and Registration Toolkit) is an open-source, cross-platform system that provides developers with an extensive suite of software tools for image analysis. You can learn more about it from its website, [https://itk.org https://itk.org ]. Find the page on this website that has a link to the Software Guide. Write down how many pages are in the latest Software Guide.

# ITK (Insight Segmentation and Registration Toolkit) is an open-source, cross-platform system that provides developers with an extensive suite of software tools for image analysis. You can learn more about it from its website, [https://itk.org https://itk.org ]. Find the page on this website that has a link to the Software Guide. Write down how many pages are in the latest Software Guide.

# The source code for ITK is available on GitHub [https://github.com/ https://github.com/]. Go to the GitHub website and find the ITK repository. Write down how you found the download page for the repository.

# The source code for ITK is available on GitHub [https://github.com/ https://github.com/]. Go to the GitHub website and find the ITK repository. Write down how you found the download page for the repository.

−

# The developers of ITK decided that it was advantageous to create classes that implement infinite precision numbers. They distinguished between infinite precision decimal numbers and infinite precision integers. Find the interface file (header file) for the class that implements infinite precision numbers with decimal arithmetic. Provide answers to the following questions:

+

# The developers of ITK decided that it was advantageous to create classes that implement infinite precision numbers. They distinguished between infinite precision decimal numbers and infinite precision integers. Find the interface file (header file) for the class that implements infinite precision numbers with decimal arithmetic and open the file. Provide answers to the following questions:

−

## What is the name of the header file?

+

#* What is the name of the header file?

−

## What is the name of the class?

+

#* What is the name of the class?

−

## Who authored this code?

+

#* Who authored this code?

−

## When was it last modified?

+

#* When was it last modified?

+

+

# There are two functions in this file whose name is "operator>>".

+

#* Are they public or private?

+

#* How do they differ?

+

#* When two functions have the same name what is this called?

+

#* What does the first of these functions do? Read about this in the file's comments and in your textbook and explain in your own words what this function does.

+

#* What is this word "inline" -- why is it used?

+

−

#

=== Deliverables: ===

=== Deliverables: ===

Revision as of 14:24, 16 August 2016

Title

Exploring a C++ GitHub repository to learn about operator overloading (page in progress)

Overview

Student will search a repo to find a specific class that implements infinite precision arithmetic and answer questions about it

Prerequisite Knowledge

Basic CS1 background, including basic C++ class programming concepts

Learning Objectives

The student should be able to search GitHub repositories in general; to read code and understand enough to know what overloaded operators do; to understand what inline functions are and when it is appropriate to use them; and to understand the advantages of using overloaded C++ operators and how to create them.

Contents

Background:

The problem that this activity attempts to solve is how to introduce basic FOSS concepts to CS2 students in the context of learning about CS2-specific topics.

Before this activity is assigned, the students should be introduced to the concepts of online repositories, free and open source software, and to a very limited extent, the use of GitHub. It is not really necessary to know how to use the version control features of GitHub for this activity because the students are not cloning code or uploading it. They can do this activity entirely by browsing the code on-line.

The activity asks the students to search through the GitHub repository for the class that implements infinite precision decimal numbers. It then asks them to look at the interface file for this class.
The particular objectives are to get them to learn something about exploring GitHub, about reading code and comments, about overloaded operators and inline versus non-inline functions.

In terms of their coding knowledge, they should know how to read C++ class interfaces and implementation files, know how to read C++ function definitions, and be able to write C++ programs that use classes. One of the questions asks them to examine a function that is recursive, without stating that it is recursive, and gets them to discover this. Students who have been introduced to recursive C++ functions will have a different response from those who have not.

Students will be given specific reading materials before starting this project, including:

populate this lists here!!

Directions:

Students should be told that, as they do all of these exercises, they should write the answers to all questions in the form provided. The instructor should create a template form to simplify grading and assessment of student responses.

ITK (Insight Segmentation and Registration Toolkit) is an open-source, cross-platform system that provides developers with an extensive suite of software tools for image analysis. You can learn more about it from its website, https://itk.org . Find the page on this website that has a link to the Software Guide. Write down how many pages are in the latest Software Guide.

The source code for ITK is available on GitHub https://github.com/. Go to the GitHub website and find the ITK repository. Write down how you found the download page for the repository.

The developers of ITK decided that it was advantageous to create classes that implement infinite precision numbers. They distinguished between infinite precision decimal numbers and infinite precision integers. Find the interface file (header file) for the class that implements infinite precision numbers with decimal arithmetic and open the file. Provide answers to the following questions:

What is the name of the header file?

What is the name of the class?

Who authored this code?

When was it last modified?

There are two functions in this file whose name is "operator>>".

Are they public or private?

How do they differ?

When two functions have the same name what is this called?

What does the first of these functions do? Read about this in the file's comments and in your textbook and explain in your own words what this function does.

What is this word "inline" -- why is it used?

Deliverables:

The student will hand in a completed form containing the answers to the given questions.

Assessment:

How will the activity be graded?

How will learning will be measured?

Include sample assessment questions/rubrics.

Criteria

Level 1 (fail)

Level 2 (pass)

Level 3 (good)

Level 4 (exceptional)

Criterion 1...

Criterion 2...

Comments:

What should the instructor know before using this activity?

What are some likely difficulties that an instructor may encounter using this activity?

Additional Information:

ACM Knowledge Area/Knowledge Unit

What ACM Computing Curricula 2013 knowledge area and units does this activity cover? ACM_Body_of_Knowledge