EE 261, Introduction to Programming and Software Design

Lecture:          MW 11:30-12:20, 176 CAMP Building
Lab Sessions, 241 Snell Hall
         EE261-11  Fri 11:00-11:50
         EE261-12  Fri 12:00-12:50
         EE261-13  Fri 13:00-13:50

Instructor: Daqing Hou
Office: CAMP 127  
Email: dhou at clarkson dot edu  (To best catch my attention, put EE261 in the subject line of your email.)
Campus Phone: X7675
Office Hours: MW 13:30-15:00 F 14:00-15:00

Teaching Assistant: Chandan Raj Rupakheti
Office: CAMP 115
Email: rupakhcr at clarkson dot edu
Office Hours: TuTh 11:00-12:30

Required Textbooks and Software

(1) Nell Dale, PhD, University of Texas, Austin, Chip Weems, University of Massachusetts, Amherst
Programming and Problem Solving with C++, 5e with the CD-ROM version of A Laboratory Course in C++, 5e. (Textbook+CD ROM Bundle.)
ISBN: 0763779792

Available at the Clarkson bookstore.

(2) Microsoft Visual C++ 2008 Express Edition.

     Available free online. Click this link to download.

Course Objectives

Students will:
1. learn basic principles of programming and software design.
2. develop problem solving skills using programming as a tool.
3. gain experience in the design and implementation of numerical algorithms.
4. become familiar with a modern software development environment.
5. become aware of issues associated with software copyright and acceptable use policies.

Learning Outcomes

At the end of this course, students will be able to:
1. read and understand the behavior of small C++ programs.
2. debug and fix problems in small C++ programs.
3. write correctly behaved, maintainable C++ programs for well-specified problems.
4. use a modern software development environment.

5. practice software engineering while respecting software copyright and acceptable use policies.

Schedule & Lecture Notes

Week (Sunday)
Topics (slides) + reading
Lab work
homework assignments
Aug. 23 (1)
chapter 1 Introduction

happening, process, and computation, algorithm versus program, action and effect, gcd
chapter 1, Prelab activities, prelab, Lesson 1-1, Lesson 1-2.



1%
Exam Preparation Exercise 5 (page 39)

Programming Warm-up Exercises 1 and 2 (page 40-41)

Due: Midnight, Monday, August 31

Email your answer to instructor;

Put "EE261 Homework 1" in email subject line.

2%

Aug. 30 (2)
chapter 1 Introduction

computer structures, binary data representation, machine instructions, assembly versus high-level programming languages, systems software, compilation and execution, programming process, software maintenance, ethics and professional responsibilities
Lessons 1-5, 1-6, 1-7.

1%
DO all questions 1-11 in Quick Check Section (Page 37-38). No submission required.

DO all questions 1-12 (except 5) in Exam Preparation Exercises Section (Page 38-39).

Write down your answers on a single sheet of paper.
Be sure to put down your names and student id as well.

Due: Submit your written answers to instructor during the class of Monday, Sept. 7.

2%

solutions for Chapter 1 problems
Sept. 6 (3)
chapter 2
variables & output

1. gross program structure (subprograms/functions-main-Square-Cube)
2. cout (<<, endl, string ("this is a string") versus char ('.'), blank lines and spaces, special characters (\n, ", ', \t))
3. identifiers (letter or _ followed by zero or more letters or digits or _) vs literal constants vs reserved words, choosing meaningful identifiers and consistent naming conventions
4. data types (int, string, char, float) and type compatibility
5. two kinds of comments (// vs /* .... */)
code used Monday
6. variables (addressable, value, expression), named constants (e.g., PI and PROMPT), and assignment statement
7. string concatenation
8. null statement+block+output statement+declaration statement+assignment statement
9. special characters
10. C++ preprocessor and std namespace
11. syntax templates
code used Wednesday
DO BEFORE Friday lab

Chapter 2 Prelab activities and prelab assignment (Page 31)

DO DURING Friday lab session:

Lesson 2-1, Lesson 2-3, Lesson 2-5

2%

Note:

The result of prelab will be checked as part of Lesson 2-1. Thus, as a rule, you do not need to submit prelab any more in the future.
Write a C++ program to solve one problem of your choice from the four problems listed in the Programming Problems Section (Page 86-87).

All of your code should be written in ONE and ONLY ONE cpp file.

Insert a comment block in the beginning of the cpp file that states your names and student id, as follows:

/*
 * your name and student id
 * which problem you are solving.
 */
... your other code follows

Email instructor with single cpp file as attachment.

Add EE261 on subject line of your email.

Due: 10 PM, Tuesday. Sept 15.

3%

brief marking criteria
-program compiles and runs correctly          +3%

-program compiles but has one or two small problems +2%

-program represents reasonable effort of trying +1%

-no program submitted +0%
Sept. 13 (4)


chapter 3
numeric types, expressions, more output formatting & string

1. simple vs structured data types, integral vs floating types
2. ranges of simple data types, overflow and underflow
3. binary operators (+,-,*,/,%), unary operators (+5, -4, ++x, --y, x++, y--), simple vs compound arithmetic expressions, operator precedence
4. type coercion vs type conversion
5. misc facts (012, 3.8f, precision of floating data types)

code used Monday (simpleTypes.cpp, char.cpp, int.cpp)

6. function calls and argument lists, void vs value-returning functions
7. common, predefined, standard library functions
8. additional string functions

code used Wednesday (float.cpp, str.cpp, mathFunctions.cpp)


DO BEFORE Friday lab

Chapter 3 Prelab activities and prelab assignment (Page 51)

DO DURING Friday lab session:

Lesson 3-1, Lesson 3-2, Lesson 3-3, Lesson 3-4

2%

Note:

The result of prelab will be checked as part of Lesson 3-1.
Thus, as a rule, please do not email me prelab.
Programming Warm-Up Exercises (page 131)

2, 3, 4, 9

Programming Problems (page 132-133)

3, 5

Email instructor three files, one of which contains answers to the Programming Warm-Up Exercises and the other two  contain the source code for the two programming problems, respectively.

Add EE261 on subject line of your email.

Due: 10 PM, Thursday. Sept 24.

5% (2% for each program)

brief marking criteria
-program compiles and runs correctly          +2%

-program compiles but has one or two small problems +1.5%

-program represents reasonable effort of trying +1%

-no program submitted +0%
Sept. 20 (5)

-No lectures Monday and Wednesday. (instructor attend research conference.)

-TA will provide the usual office hours.

-Quiz 1 (a take-home quiz) will be posted here by Midnight of Sunday, Sept. 20. (Solution is here.)
DO DURING Friday lab session:

Lesson 3-5, Lesson 3-6, Lesson 3-7.


optional

Sept. 27 (6)
(Class starts Wed Sept. 30)

chapter 4 input
DO BEFORE Friday lab

Chapter 4 Prelab activities (page 71) and prelab assignment (Page 77)

DO DURING Friday lab session:

Lesson 4-3 (page 87)

2%
Programming Problems (page 180-181)

3, 4

Email instructor two files that contain the source code for the two programming problems, respectively.

Add EE261 on subject line of your email.

Due: 10 PM, Tuesday. Oct. 6.

4% (2% for each program)

brief marking criteria
-program compiles and runs correctly          +2%

-program compiles but has one or two small problems such as formatting and comments +1.5%

-program represents reasonable effort of trying +1%

-no program submitted +0%
Oct. 4    (7)
chapter 5 Conditions, logical expressions, and branching

DO BEFORE Friday lab

Chapter 5  prelab assignment (Page 107)

DO DURING Friday lab session:

Lesson 5-2, 5-3, 5-4, and Exercise 1 and Exercise 2 of Lesson 5-5.

2%
This is an important chapter. hence more work needed.

- DO all questions 1-11 in Quick Check Section (Page 231). No submission required.

- DO the following questions in Exam Preparation Exercises (Page 232-233):

4, 5, 6, 7, 10, 11, 12, 13, 14, 15

DO the following questions in Exam Preparation Exercises (Page 234-235):
2, 4, 6, 7, 10, 12

Email instructor your answers to these 16 questions.

4% (0.25 x 16)

- Programming Problems

4, 8

4% (2% each)

Email instructor two files that contain the source code for the two programming problems, respectively.

Add EE261 on subject line of your email.

Due: 10 PM, Tuesday. Oct. 13.
Oct. 11  (8)
chapter 6 Looping

Code (looping.cpp) and test data (data.txt) used in Wed. lecture.

The discussion of chapter 7, Additional control structures, is postponed.






-Quiz 2 (take-home) will be posted here by Midnight of Friday, Oct. 16 and due 10 PM, Sunday, Oct. 25.

(Solution is here.)
DO BEFORE Friday lab

Chapter 6  prelab assignment

DO DURING Friday lab session:

Lesson 6-2, 6-3, 6-4

2%
- DO the following questions in Exam Preparation Exercises (Page 289-291):

6, 9, 10, 15

Email instructor your answers for these 4 questions.

2% (0.5 x 4)

- Programming Warm-Up Exercises

10 (Page 292)

- Programming Problems

4 (Page 294)

4% (2% each)

Email instructor two files that contain the source code for the two programming problems, respectively.

Add EE261 on subject line of your email.

Due: 10 PM, Tuesday. Oct. 20.
Oct. 18  (9)
(Midterm grade due to SAS Oct. 21-Noon)
chapter 8 Functions

DO DURING Friday lab session:

Lessons 8-3, 8-4.

Bonus 8-5.

2%
- DO the following questions in Exam Preparation Exercises (Page 385-386):

4, 14

Email instructor your answers for these 2 questions.

1% (0.5 x 2)

- Programming Warm-Up Exercises

3, 16 (Page 387)

2% (1% each)

Email instructor two files that contain the source code for the two programming problems, respectively.

Add EE261 on subject line of your email.

Due: 10 PM, Tuesday. Oct. 27.
Oct. 25  (10)
chapter 9 Scope, lifetime, and more on functions Continue to work on Chapter 8 Functions No HW
Nov. 1  (11)
-No lectures Monday and Wednesday.
 Instructor can be reached via email.

-TA will provide the usual office hours.

-Midterm (quiz 3, take-home) will be posted here by Midnight of Sunday, Nov. 1 and due 10 PM, Thursday, Nov. 5.

(Solution is here.)


Nov. 8  (12)

chapter 10 User-defined data types
chapter 11 Arrays
slides
DO During Friday lab session

Lessons 11-2, 11-3, and 11-4

2%
Exercise 11 on Page 564 (0.5%)
Exercise 17 on Page 565 (0.5%)
Problem 2   on Page 569 (2%)

Email instructor two files, with one containing the answer to Exercises 11 and 17, and the other the source code for programming problem 2.

Add EE261 on subject line of your email.

Due: 10 PM, Tuesday. Nov. 17.
Nov. 15 (13)
chapter 12 Classes and abstraction

C++ Compilation Process, compilation units, header files, makefile
code discussed Monday: base => v1

class, data and function members, private versus public, member declaration versus definition, constructor/accessor/mutator, default constructor, object assignment, construction process (memory allocation + initialization of data members)
code discussed Wednesday: v2 => v3 => v4
Continue to work on Arrays Lab (Chapter 11) Exercises

Chapter 12

Programming Problem 4 (Time class)

Programming Problem 6
(Phone Number class)

%4 (%2 each).

Due: 10 PM, Tuesday. Nov. 24.
Nov. 22 (14)
(No class Wed and Friday)
chapter 18 Recursion No lab

Nov. 29 (15)
Review/QA sessions for final exam.
Chapter 12
Prelab 2%

Chapter 18
Exercise 2 of Lesson 18-2 2%

Dec. 6    (16)
final will be posted here by Midnight Sunday Dec. 6.

Email your solution to instructor by the due time.
Make sure that you've spelled my email correctly.

Due 1:00 p.m., Tuesday Dec. 8. (Strict deadline according to email timestamp. No late submissions will be accepted.)



Clarkson Academic Calendar

Course Work and Evaluation


Work
Note
Weight
Programming Lab.
241 Snell Hall, Friday
25% (5% for lab participation)
Homework Assignments

40%
Midterm Exam (aka quiz 3)

5%
Quiz's
2 one-hour quiz's.
10%
Final Exam

20%

Course Policies (adopted from Timothy Fanelli)

The following course policies are nonnegotiable except in the rarest exceptions where circumstances permit.
However, students are encouraged to discuss with the instructor about special requests.
 
• Textbook.
Students are required to read the corresponding chapter before coming to the lecture.

• Laboratory attendance is mandatory.
– If you are not in attendance during a lab, you will not receive credit for that assignment.
– If you can not attend your scheduled lab section, you may attend a different section on the same day.
– Due to the size of this course, normally lab make ups will not be offered unless fully justified.
– Up to three missed labs will be dropped at the end of the semester to allow for valid absences.

• Homework is assigned weekly (check out the schedule above regularly).
– Assignments are due one week from the dates they are posted unless specified otherwise.
– Assignments are to be completed individually, but discussions with others are encouraged.
– If you are found to have copied someone else’s homework, all parties involved will receive a zero on that assignment.
– Due to the large size of this class, late homeworks will be accepted only if the assignment has not yet been graded, or in consultation with the instructor.

• Exams
– All quiz's and exams will be open-book / open-notes.
– You may not share your text book or notes during the exam (if you don’t bring your own, you’re out of luck).
– The relevant chapters in the text book and anything that I talked about in the class may be used as exam questions.


July 15, 2009 --           Redaction 1
August 21, 2009 --      Added lecture plan.