This course provides an introduction to the development of algorithmic solutions to a variety of problems and the development of computer programs to implement the solutions. It explores standard programming structures used to introduce fundamental algorithmic/programming concepts including variables, assignments, conditionals, loops, functions, and arrays and their role in problem solving.
Course emphasizes structured programming in the development of algorithm solutions to common problems. Objected oriented paradigm is introduced at a basic level.
Course Objectives
Upon successful completion of this course, the student will be able to
- Develop algorithms from user problem statements.
- Express the solutions to computer oriented problems using pseudocode.
- Proficiently transform designs of problem solutions into a standard programming language.
- Use an integrated programming environment to write, compile, and execute programs involving a small number of source files.
- Apply debugging and testing techniques to locate and resolve errors, and to determine the effectiveness of a program.
- Apply standard/structured programming techniques including design approaches, use of functions/methods, use of documentation, and avoidance of excessive branching.
- Proficiently use fundamental programming elements including: variable declaration, use of data types and simple data structures (arrays and objects), decision structures, loop structures, input and output for console and text files, and functions/methods.
Course Outline
- Introduction — 1 hr
- History of computers
- Components of a computer
- Programming languages
- Compilation vs. interpretation
- Basic program structure and the Integrated Development Environment — 4 hrs
- Essential program structure
- Documentation and standard programming practices
- Integrated development environment(IDE) overview
- Editing (with the IDE)
- Compilation (with the IDE)
- Execution (with the IDE)
- Debugging (with the IDE)
- Algorithm development using psuedocode — 4 hrs
- Software engineering method
- Procedural problem solving approaches: assignments, conditionals, and loops
- Classic formula problems
- Classic aggregate problems (e.g., maximum, minimum, sum, average)
- Basic input and output — 1 hr
- Console output including basic data formatting
- Console input
- Variables and Expressions — 3 hrs
- Variable declarations including common data types (e.g. int, float, string)
- Arithmetic expressions including precedence and associativity
- Assignment statements (numeric and string data)
- Library functions
- Standard programming practices for variables and assignments
- Case problems using variables and expressions
- Exam 1 — 1 hr
- Decision structures — 5 hrs
- Boolean expressions
- Single alternative conditional statements (e.g., if)
- Double alternative conditional statements (e.g., if/else)
- Multi-way statements (e.g., case)
- Nested conditional structures
- Standard/structures programming practices for decision structures
- Case problems using decisions structures
- Loop Structures — 5 hrs
- Loop control variables, initialization, test, and modifications
- Pre-test loop (e.g., while loop)
- Post-test loop (e.g., do-while loop)
- Counting loop (e.g., for loop)
- Nested loop structures
- Standard/structures programming practice for loop structures
- Case problems using loop structures
- Input and output using files — 5 hrs
- Input streams from files
- Priming read loop
- Output streams to files
- Case problems using file input and output
- Exam 2 — 1 hr
- Simple data structures — 5 hrs
- One dimensional arrays
- Strings as arrays
- Multi-dimensional arrays
- Records(e.g., objects/entities)
- Case problems using arrays and records
- Functions — 5 hrs
- Argument passing
- Returning results
- Recursion
- Testing a program system
- Standard/structures programming practices for functions
- Case problems using functions
- Testing and Debugging Techniques — 2 hr
- Class declarations
- Instance variables
- Methods
- Object instantiation
- Standard/structures programming practice for classes
- Case problems using objects
Total — 42 hrs
Final Exam — 2 hrs
Evaluation Methods
The final grade for the course is determined as follows:
50 percent: Examinations. Three mid-term exams and the final—each consisting primarily of multiple choice, true-false, and short answer questions.
35 percent: Programming assignments. There are approximately six programming assignments worth varying numbers of points that collectively count this portion of grade. Suggested tasks for the assignments include: linear search, sorting, 2-D array processing, interactive programming, simulation, sequential file processing, modularization.
15 percent: Class participation and quizzes. This may be based on written questions, verbal discussions, computer lab sessions, or other form of interaction.
Suggested Grading Scale: 90-100% A, 80-89% B, 70-79% C, 60-69% D, 0-59% F
Attendance Policy:
Attendance is crucial to success in this course. To encourage class attendance, the following policy will be used: Attendance will be taken at every class. For each unexcused absence, starting with the fourth, 2 percent will be deducted from the overall class grade. Generally, excused absences involve illness with a doctor's excuse, verifiable family emergencies, or conflicting university activity.
Required textbook, supplemental books and readings
Gaddis Tony, Starting Out with C++: From control structures through objects, 7th Edition, Addison-Wesley Publishing, 2012.
Special Resource Requirements
None.
Bibliography
Deitel & Deitel, Java: How to Program, 9th Edition, Prentice Hall, 2012.
Deitel & Deitel, C++ How to Program: Late Objects Version, 7th Edition, Prentice Hall, 2011.
Gaddis, Tony, Starting Out with Java: Control Structures to Objects, 2nd Edition, Pearson, 2012.
Horstmann, Cay, Java Concepts, 6th Edition, Wiley, 2009.
Liang, Y. Daniel, Introduction to Programming with Java, 8th Edition, Pearson, 2010.
Liang, Y. Daniel, Introduction to Programming with C++, 2nd Edition, Pearson, 2010.
Lewis, John, and Loftus, William, Java Software Solutions: Foundations of Program Design, 7th Edition, Pearson, 2012.
Malik, D. S., Java Programming: From Problem Analysis to Program Design, 5th Edition, Course Technology, 2011.
Malik, D. S., C++ Programming: From Problem Analysis to Program Design, 5th Edition, Course Technology, 2010.
Savitch, Walter, Absolute Java, 4th Edition, Addison Wesley, 2009.
Stroustrup, Bjarne, Programming: Principles and Practice Using C++, Addison-Wesley Professional, 2008.