Contents

Portfolios

In this class, a portfolio consists of a set of assignments—some required, others optional—that are used to assign you skill points. Rather than grading each assignment by itself, a portfolio allows a more holistic assessment of your skills and effort. It also allows you to resubmit work, encouraging you to understand and fix mistakes.

You will submit your portfolio for a review with feedback periodically during the semester. For each review, I will return to you a summary of what new skill points you earned, a summary of all skill points earned to date, and a summary of the strengths and weaknesses of your work, with suggestions on how to improve.

(Back to top)

Benefits of a portfolio

There are many benefits of the portfolio-based grading system used in this class. As mentioned above, it allows a more holistic assessment of your work compared to individual assignment grading. It also affords you more flexibility in that the final portfolio grade is based on your ability to demonstrate skills in general, and not on a per assignment basis. So you are not penalized if you bomb an assignment, provided you demonstrate the associated skills in other assignments.

A feature of the portfolio is that you can resubmit assignments after fixing mistakes, and still get all the associated points. To encourage fixing mistakes and seeking help, you will earn effort points.

(Back to top)

Skill Points

Your portfolio will be assessed against the following set of skills. For each skill, there is a certain number of points you must accrue throughout the semester to get a 100% score.

Surplus points will contribute towards the total, up to a capped amount (10% of the total required points).

Here are all the skills and the number of points that must be accrued for each:

Skill Points
Effort 150
Participation 150
Problem solving 150
Communication 100
Creativity 50
Style 50
Planning 50
Variables/Constants50
Output 50
Input 50
Branching 50
Loops 50
Predicate logic 50
Functions 50
Classes/Structs 50
Arrays 50
Total 1150

Effort

Effort points are gained from submitting polished work, spending a reasonable amount of time on assignments, seeking help from me and tutors when you run into trouble, carrying out goals you assign for yourself (as recorded in each portfolio review submission), being on-task during class and labs, and striving to improve your understanding of the material. Yes, there are many, many ways to demonstrate effort.

Participation

Participation points are gained from asking and answering questions in class as well as being engaged and on task during group activities (in and outside of class).

Problem solving

Problem solving and critical thinking are key life skills. They are especially necessary in computer science, where many problem seem insurmountable and possible solutions for a single problem can range from extremely simple to intractably complex. Demonstrating a thoughtful, analytical approach to designing, implementing, testing, and debugging programming solutions will earn you points in this category. Seeking help from me and tutors can also add points, as asking questions is a crucial technique in chipping away at a problem.

Communication

Communication skill points can be earned by speaking clearly in class, asking questions in an appropriate manner (see How NOT to ask a question), including comprehensive technical documentation (headers and comments) in your programs, and using eloquent, high quality English in all written material submitted. The keys are to be clear, concise, and informative.

Creativity

Creativity plays a huge role in problem solving. It also helps you stand out among others (both in school and on the job) and is an intrinsic motivator. I have found that students with an original idea in their head are more apt to spend time working through hard spots, come up with more creative solutions, and have better overall projects. You can earn points for creativity by coming up with cool and original programming projects, implementing great looking interfaces for programming assignments, and demonstrating well thought out, eloquent solutions to computational problems.

Style

Poor program style is my pet peeve. Most software companies have style guidelines for programming and many rigorously moderate code added to products to ensure it adheres to those guidelines. Why? Because code that is well styled and formatted is easier to read and comprehend then code that is messy and unstructured. Good style is good for you and and it's good for anyone that needs to look at your code (like me!). This is an easy set of skill points to earn: just follow the style guidelines.

Planning

For many people, planning is their least favorite activity in the process of programming. However, it is something that is both helpful and required anywhere software engineers are hired. Planning points are earned by including planning designs for a project or problem that are clear and appear thoroughly thought out.

Variable/Constants

These points are earned by correctly initializing, naming, and using C++ variables and constants in assignments.

Output

Output points are earned by correctly using cout, file output functions, and other output functions to display text to the user or save it to a file.

Input

These points are earned by correctly using cin and file input functions, reading command line arguments, and other forms of obtaining input from users in C++ assignments.

Branching

Branching points are earned by correctly using if, else if, else, and switch statements.

Loops

Demonstrating the correct use of for, while, and do-while loops will earn points in this category.

Predicate Logic

Both branching and loops require the use of boolean predicates. To earn predicate logic points, you must properly implement predicate logic in these structures.

Functions

Points are earned in this category by correctly using functions. This includes demonstrating how functions are declared, defined, and initialized and how data is passed between functions. Choosing well which chunks of code to encapsulate in a function, giving them reasonable names, and keeping them minimal will also earn points.

Classes/Structs

Points are earned for classes and strcuts by correctly naming, declaring, and using them.

Arrays

These points are earned through declaring and using arrays properly.

(Back to top)

The contents of a portfolio

I will provide a web page outlining what must be included in a portfolio for each review. In general, student should include the following:

The implicit materials consist of past portfolios, exams, and quizzes. You don't need to include copies of them.

Lab and programming assignment reflections

Of the required materials, which labs and projects are required will be laid out in each individual portfolio review. Labs and projects must include a reflection.txt file in which you reflect on what you are proud of, what difficulties you encountered, what you would have done differently, and who you worked with.

Topic review questions

Topic review questions will be given on each portfolio description. You should include a text file that answers these questions.

README

All reviews must have a README text file that describes the content of your portfolio submission (see this README example). It should be a regular text file (use Sublime Text to create it).

report.txt

Every portfolio review must include a regular text-file report that outlines three pieces of information:

  1. a skills justification: what skill points you seek and the justification for why you think you've earned them
  2. a reflection on what you found particularly easy or difficult as well as any epiphanies you had since the previous review
  3. a PPF (past, present, future): a list of what goals you set for this review (past), a list of what goals you actually accomplished (present), and a list of goals for the next review (future)

You can see an example of a report here.

Here is an entire portfolio example, including the call for the portfolio and a sample submission. This is only an example!

(Back to top)

Portfolio Reviews

For each review, I will return to you a note outlining where your portfolio currently stands, what you did well, what you should work on, and things I think you can do to improve your grade.

(Back to top)