CS 124 is the first class in a two class sequence exploring how to write code in C++. The first class, CS 124, teaches us how to write procedural programs. The second class, CS 165, teaches us how to write object oriented programs. The goal of CS 124 is that each student will be able to solve problems in C++ and have a solid foundation in software development methodology.

Why do I care?

There are two important purposes this class serves. First, it is a foundation for the following degrees: Computer Science, Software Engineering, Computer Engineering, and Electrical Engineering. If your major is one of these, you will need to master all aspects of this course. Do not panic! All of these principles will be reinforced in later courses.

The second purpose is to help us get a better understanding of how computers work. Computers are part of our everyday life. Through a basic understanding of computer hardware and through a deep dive into procedural programming, the world of computers will be less mysterious and more understandable. Does not everyone in this modern world need that?


By the end of the semester, each student will:

These goals will be explored in the context of C++ using the Linux operating system.

Course Outline

This class will be divided into four units, each of which working the same way. After all the activities in a section are completed, you will have the opportunity to take the section test and complete the project. The four units are:

Weekly Organization

Each unit will be sub-divided into seven or eight chapters. Most weeks, we will work through two or three chapters during the course of the week. Each week will follow the following pattern:

  1. Preparation - Assignment: Must be completed before the exercises can be started. Most of these will include writing a simple C++ program, but some will be I-Learn quizzes. The details for each assignment will be posted in I-Learn and in the textbook. If you need help on your assignment, please turn to the developer's forum for help. There will be three preparation assignments most weeks, one per chapter in the textbook.
  2. Teach One Another - Developer's Forum: Every week there will be a developer's forum. This will be the first place you go to get answers to your questions and to demonstrate what you have learned during the course of the week. You will get credit for your participation in the Developer's Forum. There three ways to get credit: 1) As questions about part of the reading, the preparation assignment, or the project; 2) Answer the questions posed by other students; and 3) Explain a solution from the weekly problem sets.
  3. Ponder & Prove - Project: Every unit will have a project associated with it. This project constitutes most of your grade. You should devote a few hours every week on your project.


There are four components to your overall grade:

Preparation - Assignment 20% Work on the assignment as you read the text for the lesson. There will almost always be an example "a lot like" the assignment for each lesson. If you complete an assignment before class, you will get 100%. If you complete it one day early, you will get 125%. If you complete it two days early, you will get 150%. If you complete it up to two days after class, you will get 50%.
Teach One Another - Developer's Forum 30% Points will be awarded according to the quality of your questions, the quality of your answers, and the clarity in which you explain solutions from the problem sets.
Ponder - Project 40% 4 projects broken into 13 chunks. These will be problem solving exercises using the tools learned in the assignments. One late project will be accepted up to 2 days late and be marked off 20% if prior arrangements have been made with the instructor. Contact your instructor for more details.
Prove - Test 10% 4 test worth 2.5% each.
Grades are as follows: 100% → 90%  A:  Demonstrated mastery of the class
89.9% → 80%  B:  All of the key concepts and skills have been learned
79.9% → 70%  C:  Acceptable, but might not be ready or CS 165
69.9% → 60%  D:  Developing; the class has yet to be mastered
59.9% → 0%  F:  Failed to understand or complete the course

Additionally, a minus (-) will be added when the last digit is a 0, 1, or 2 for all grades except F's. A plus (+) will be added when the last digit is a 7, 8, or 9 for all grades except A's and F's. Grades will be posted on I-Learn but you are responsible for verifying your grade. Please notify me if there is a problem.

Most of the learning activities have a time estimate associated with them. These signify how long it takes the average student to complete the activity for the average grade. Some students will complete the assignment significantly faster or slower than the average, and getting an "above average" grade may take much more time and effort. Please use the estimates as guidelines; they are not guarantees.

Course Materials

The text for this semester will be James Helfrich's C++ Procedural Programming in C++. This will be available in the book store. You can also access the textbook online.

There will be additional material available through I-Learn, including:

Finally, there will be additional material available on the course Linux directory \home\cs124


Please contact your instructor for the late work policy for your section. As a general rule, late work is not accepted unless an arrangement was made before deadline.

You may work with your classmates but all submitted work must be original. Share ideas; do not share code! Assistance from a classmate should be on par with the help you would expect from a lab assistant. The penalty for copying or plagiarizing of assignments might be one or more of the following: -100% on an assignment, being asked to withdraw from the class, a failing grade in the class, or disciplinary action by the University. For more information about this, please see this document on plagiarism.

Late work will generally not be accepted in this class. That being said, there are exceptions. If you know of an upcoming event that will keep you from turning something in on-time, you need to make prior arrangements with the instructor. As a general rule, the instructor will be more accommodating before the due date than after.


There will be two main ways to communicate with the instructor in CS 124: BYU-Idaho e-mail and the Developer's Forum:


BYU-Idaho is committed to providing a working and learning atmosphere that reasonably accommodates qualified persons with disabilities. Reasonable academic accommodations are reviewed for all students who have qualified documented disabilities. Services are coordinated with the student and instructor by BYU-Idaho Disability Services. If you need assistance or feel you have been unlawfully discriminated against on the basis of disability, you may seek resolution through established policy and procedures.

If you have any disability that may impair your ability to complete this course successfully, please contact Disability Services as soon as possible, preferably before the beginning of the semester, in order to insure that you receive appropriate accommodations.

Disability Services Contact Information:


BYU-Idaho prohibits sex discrimination against any participant in its education programs or activities. Prohibited sex discrimination includes incidents of sexual harassment (including sexual violence), dating violence, domestic violence, sexual assault, and stalking (collectively “sexual misconduct”).

As an instructor, one of my responsibilities is to help create a safe learning environment for my students and for the campus as a whole. University policy requires that I report all incidents of sexual misconduct that come to my attention. If you encounter sexual misconduct, please contact the Title IX Coordinator at or 208-496-9209. Additional information about sexual misconduct and available resources can be found at