CMPSC 121: Beginning Programming

Textbook Information

Required:

  • Gaddis, T. (9th Edition). Starting Out With C++ from Control Structures through Objects. Pearson. ISBN-13: 978-0134498379
    • You do NOT need any access codes (e.g. Pearson MyLab Programming, MyProgrammingLab, etc.) Don’t pay extra for these features!

Published Remarks

  • None

Hardware Requirements

Operating SystemPenn State’s LMS, Canvas, supports most recent versions of Microsoft Windows and Apple Mac operating systems.
To determine if your operating system is supported, please review the Canvas Computer Specifications for a list of required computer hardware specifications and internet speed, please review the Canvas Computer Specifications. Canvas supports the last two versions of every major browser release. We highly recommend updating to the newest version of whatever browser you are using.
To determine if your browser is supported, please review the list of Canvas Supported Browsers.

Software Requirements

  • Visual Studio 2022 – *Instructions for download found in “Supplemental Material” module.

Proctored Exams

  • None

Course Description

This course provides an introduction to a high-level programming language, including arrays, procedures, and recursion. You will learn design and implementation of algorithms, structured programming, and problem-solving techniques.

Prerequisite:  MATH 110 or prerequisite or concurrent MATH140

Overview

During this course, the topics included are:

  • structured programming
  • problem-solving techniques and
  • a high-level programming language, including arrays, procedures, parameters, and recursion.

Outcomes

Upon completion of the course, students should possess the following skills:

  • Problem Definitions: Given a problem, students can create a functional description of the problem including input and output specifications, and processing steps to obtain the output from the input. This description should be added to code as comments.
  • Problem Synthesis: Given a problem, students should be able to decompose the problem into a sequence of single-purpose functions that are highly cohesive and loosely coupled.
  • Data Types: Given a functional description of a problem, students can select appropriate data types (including primitive data types, structures, pointers, and arrays) for storing the input and output values. Declare, define, and initialize one and multi-dimensional, simple data type arrays of a fixed size. Demonstrate the ability to read from and write to an arbitrary array element using array indices. Demonstrate an ability to process the entire array, one element at a time, performing both read and write operations.
  • Assignment Statements: Given a mathematical expression, students can translate this expression into equivalent syntactically correct programming statements.
  • Style/Documentation: Given a problem, students can write code that conforms to a programming style specified by the instructor.
  • Control Structures: Given a problem, students can select and implement the appropriate control structure (if/else, switch, for-loop, while-loop, do while-loop, and recursive function). Given a problem and a specific control structure, students can implement that control structure to solve the problem. Given the pre/post conditions, students can write functions utilizing various return types, pass by reference parameters, and/or pass by value parameters as appropriate. Given a simple recursive problem, students should be able to write the recursive function to solve that problem. Given a recursive function and some data, a student should be able to predict the results of the function.
  • Code Analysis: Given an unfamiliar code segment and specific inputs, students can analyze the code and predict the result.
  • Testing and Debugging: During program development students can utilize basic testing methodologies and debugging tools such as stubs, drivers, and integrated debuggers to identify fault points and possible error conditions, and exceptions with try-catch block (as time permits).
  • File Input and Output: Given a problem, a student can develop input/output modules to read data from the standard input or a text file and write data in a prescribed format either to the standard output or to a text file.

This course supports the following ABET computer science (CS) and software engineering (SE) outcomes: CS (1): Analyze a complex computing problem and to apply principles of  computing and other relevant disciplines to identify solutions. CS (2): Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline. CS (6): Apply computer science theory and software development fundamentals to produce computing-based solutions. SE (1): An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics SE (2): An ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors SE (6): An ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions

Grading

A A- B+ B B- C+ C D F
>= 940 >= 900 >= 870 >= 840 >= 800 >= 770 >= 700 >= 650 >= 0

Rounding is pre-calculated into the point scale.  A score of 939.9 is an A-, not an A. Students must bring grading issues to the attention of the instructor by discussing the scoring within one week of receipt of the graded work.

Assignment Points
Quizzes x 2 100
Projects x 3 120
Activities x 20 100
Lab x 13 130
Midterm x 1 150
Final x 1 200
Prep Questions x 20 200
Total Points 1000

Exams and Quizzes:  There are two quizzes, a midterm and a final exam. All quizzes and exams will open at 12:00am on Sunday and will close at 11:59pm Sunday on exam day. You have 24 hours to finish a quiz or exam. These assignments have time limits. You are given 60 minutes for each quiz and 120 minutes for each exam. Makeup exams are only offered to those with documented excuses who have granted pre-approved permissions, so that alternate arrangements may be made. There are no make-ups for quizzes! Projects: There will be three projects. You have two weeks to finish a project. Projects will be assigned on a Monday and due on a Sunday. Late projects will NOT be accepted. Activities:       You will be given 26 activities but only graded on the highest 20, and each activity is worth 5 points, late activities will not be accepted. Once the due date passes, there is no makeup. Lab Experiments: There will be 14 labs but the highest 13 labs are graded. The lab assignments are designed to supply you the opportunity to increase your knowledge of the subject matter through discovery and follow-on discussions. Lab assignments are to be completed in one week and submitted in the dropbox by the the lab deadline. The item(s) to be submitted are the .cpp file(and the .h file if there is one) and a Word or Notepad file containing the Experimenter Notes. You are responsible for assuring that the items are properly submitted. No late submissions will be accepted. Preparation Questions:  Most modules will have four preparation questions centered on assigned readings or material covered in the previous class period. There will always be four questions, worth eight points in total. Points are awarded as follows: 2.5 points for a correct answer.  The four questions given in class are aggregated into one grading item worth ten points. The lowest five prep questions (40 points total) are dropped.