Title: Programming Fundamentals and Problem Solving
Course Description
This course explores the discipline of computer science through a hands-on focus on practical programming skills. Topics include algorithm development, problem solving (decomposition and synthesis), program design, data representation, arithmetic and logical expressions, input/output operations, basic user interfaces, and object-oriented programming and design, with an emphasis on developing good programming habits.
Intensive programing assignments are required. The programming will involve understanding and analyzing a set of requirements for a problem, formulating a solution, and implementing that solution on the computer along with tests that show that the program achieves its goals. These programs can be intensive and fun, and are designed to provide the student with a clear understanding of principals needed to work with the computer in the future.
Prerequisites: None.
Units: 12
Course/Section: 04-330 A or B
Class Communication: Piazza
Class site: http://public.africa.cmu.edu/cbishop/pfun
Objectives
The successful student will be able to:
Topics
Analysis and Design
Decisions Class Design and Implementation Algorithm Development Iteration Objects |
Testing
Recursion Basic GUIs and Event-Driven Code Common Algorithms and Patterns Method Abstractions Coding Standards |
Language Syntax
File I/O Source File Organization Data Types and Operators Arrays Compiling and Running |
Data Structures
Collections Computer Language Comparison Scope Rules Debugging Methods Basic Computer Graphics |
Location
Faculty Information
Please use Piazza as the primary contact; talk to TAs in WhatsApp for emergencies; email is for non-PFUN topics
Grading System for the course
Grading Criteria
Exams are open-book and open-note. You will have a Midterm about half-way through the course and a Final exam at the end. You will be tested on all the material covered up to the date of the exam. Missed exams cannot be made up or retaken unless there are exceptional circumstances, which will be handled on an individual basis. It is the student's responsibility to make any necessary special arrangements with the instructor at least two class-days before the exam is given. Percentages are not rounded up
Note:
I have explicitly designed the course grading policy to rely on multiple areas of evaluation. Although some are weighted more heavily than others, they are all important. You must have a passing grade
(C or better) in each area of evaluation in order to pass the course.
If you are within one percentage point (i.e. 89 or higher, but less than 90), I will consider rounding-up your grade if all of the following are true:
Attendance
Academic Dishonesty
Submitting your work
Grading Criteria (In general)
Please note that your code must demonstrate the techniques, best-practices, and design principles taught during class. It is not sufficient to say "my program works"; your work will be evaluated based on additonal criteria covered in class.