CSE 232 Introduction to Programming II Spring Semester 2012 DESCRIPTION Continuation of object-centered programming using C++; development of classes and reliable software. Data structures and their encapsulation; stacks, queues, lists, trees, and hash tables. Algorithms operating on data structures. Object-oriented design and programming. OBJECTIVES In this course, students will increase their capability to solve larger problems by learning fundamental algorithms and data structures, as well as methods to create reliable programs using them. INSTRUCTOR M. McCullen office hours: 2142 Engineering Tu/W/Th 1:30-2:30 PM 517-355-2354 and by appointment mccullen@cse.msu.edu COURSE WEBSITE Information related to the course is available on the Internet at: http://www.cse.msu.edu/~cse232/ Those files are also accessible from the CSE Instructional System under the "/user/cse232" directory. COURSE TEXTBOOKS ADTs, Data Structures, and Problem Solving with C++, 2nd edition (Nyhoff; Pearson, 2005; ISBN 0-13-140909-3) CSE 232 Course Notes (McCullen; MSU Printing, 2012) LECTURE SESSIONS The lectures will be conducted in 1345 EB (Tu/Th 10:20-11:40 AM). Regular attendance at lecture is critical to success in this course. LABORATORY SESSIONS The scheduled laboratory sessions will be conducted by Teaching Assistants in 3340 EB, and will be used to complete laboratory exercises and to consult with the Teaching Assistants about other aspects of the course. The laboratory exercises are designed to be learning tools which complement the lectures and assigned readings. They are designed to be collaborative experiences where students work with each other and the Teaching Assistant to complete the lab exercises. If you miss a scheduled laboratory session due to illness or personal emergency, please contact your Teaching Assistant. If appropriate, your Teaching Assistant will permit you to make up the missed laboratory exercise within one week of the original due date. COURSE GRADES Your course grade will be based on the sum of the points you earn in the following two categories: Examinations (60% of total course points) Computer Projects (40% of total course points) To be eligible to earn a non-zero grade in the course, you must receive credit for at least twelve laboratory exercises, receive at least 50% of the total points available for the computer projects, and receive at least 50% of the total points available for the examinations. The following table gives the scale for course grades: 4.0 90% of points available 3.5 85% of points available 3.0 80% of points available 2.5 75% of points available 2.0 70% of points available 1.5 65% of points available 1.0 60% of points available The scale will be adjusted at the end of the semester, if necessary. EXAMINATIONS Two midterm examinations and a final examination will be conducted during the semester, and will constitute 60% of the total course points. Midterm Exam #1 (18%) Thursday, 2/16 during lecture Midterm Exam #2 (18%) Thursday, 3/29 during lecture Final Exam (24%) TBA Make-ups for examinations will be arranged if your absence is caused by documented illness or personal emergency. A written explanation (including supporting documentation) must be submitted to your instructor; if the explanation is acceptable, an alternative to the examination will be arranged. When possible, make-up arrangements must be completed in advance. COMPUTER PROJECTS A series of computer projects will be assigned during the semester, and will constitute 40% of the total course points. These projects will include the design and implementation of assignment solutions using UNIX utility programs and C++ programs. To be eligible for full credit, a solution to a computer project must conform to the specifications stated on the handout for that assignment. Solutions that conform to some, but not all, of the specifications will be eligible for partial credit. To be eligible for any credit, a solution to a computer project must be submitted for grading by the deadline stated on the assignment handout. Solutions which are submitted after the deadline will not be accepted. If you are unable to complete a computer project by the specified due date due to illness or personal emergency, contact your instructor. If your explanation is acceptable, the assignment due date will be extended (or your instructor will make other arrangements). To be eligible for any credit, a solution to a computer project must be your own work. You are encouraged to discuss the assignment specifications with your instructor, your Teaching Assistant, and other students from the class. However, anything that you submit for grading must be your own work. Under no circumstances should you share a project solution with another student. Each project solution is electronically compared to all other solutions to identify similar solutions. Students who submit solutions which are essentially identical will receive a penalty grade, such as a score of zero for that assignment or a grade of zero in the course. NOTES The instructor reserves the right to modify course policies, the course calendar, and assignment specifications, if necessary. Any extenuating circumstances which impact on your participation in the course should be discussed with your instructor as soon as those circumstances are known (such as absences due to illness or religious observances). All students are expected to be responsible users of the computer system provided for this course. Account usage guidelines published by the Department of Computer Science and Engineering are posted under: http://www.cse.msu.edu/facility/policy.php The Department of Computer Science and Engineering expects all students to adhere to General Student Regulation 1.00, Protection of Scholarship and Grades. The principles of truth and honesty are fundamental to the educational process and the academic integrity of the University; therefore, no student shall: 1.01 claim or submit the academic work of another as one's own. 1.02 procure, provide, accept or use any materials containing questions or answers to any examination or assignment without proper authorization. 1.03 complete or attempt to complete any assignment or examination for another individual without proper authorization. 1.04 allow any examination or assignment to be completed for oneself, in part or in total, by another without proper authorization. 1.05 alter, tamper with, appropriate, destroy or otherwise interfere with the research, resources, or other academic work of another person. 1.06 fabricate or falsify data or results MSU regulations, ordinances and policies regarding academic honesty and integrity are posted under: http://www.msu.edu/unit/ombud/RegsOrdsPolicies.html Students who violate the standards for academic honesty and integrity may receive a failing grade in the course. LECTURE CALENDAR Date Topics and associated readings ---- ------------------------------ 01/10 Introduction to Linux and C++ 01/12 continued 01/17 C++ expressions and control structures (Nyhoff, Appendix C.1-C.10) 01/19 continued 01/24 C++ functions and libraries (Nyhoff, Appendix C.11-C.13) 01/26 continued 01/31 Data abstraction and fundamental data types (Nyhoff, Chapter 2.1-2.4) 02/02 continued 02/07 Arrays, records and pointers (Nyhoff, Chapter 3.1-3.6) 02/09 continued 02/14 Algorithm efficiency (Nyhoff, Chapter 10.4) 02/16 ### Exam #1 ### 02/21 Data abstraction and classes (Nyhoff, Chapter 4.1-4.5) 02/23 continued 02/28 continued 03/01 C++ streams and strings (Nyhoff, Chapter 5.1-5.2) 03/06 *** Spring Break *** 03/08 *** Spring Break *** 03/13 Sequences and storage structures (Nyhoff, Chapter 6.1-6.6) 03/15 continued 03/20 continued 03/22 Stacks (Nyhoff, Chapter 7.1-7.5) 03/27 Queues (Nyhoff, Chapter 8.1-8.4) 03/29 ### Exam #2 ### 04/03 Generic functions and classes (Nyhoff, Chapter 9.1-9.3) 04/05 The C++ standard template library (Nyhoff, Chapter 9.4-9.7, 10.5) 04/10 continued 04/12 Recursion (Nyhoff, Chapter 10.1-10.3) 04/17 Advanced searching techniques (Nyhoff, Chapter 12.1-12.4, 12.7) 04/19 continued 04/24 continued 04/26 continued