CSc 10: Introduction to Computing
Assignment #8 (Usability, C++, Social and Ethical Issues and Artificial Intelligence)

Labs:
In this week's labs (starting Thursday, 11/14), CSE13 students will study user interfaces and usability, for which there is multimedia, and Jarret will teach review some principles (see the CSE13 assignment below),  Meanwhile, the TAs will introduce CSE14 students to programming in C++, with the goal of translating Java programs like those you have written this semester into C++ (see the CSE14 assignment below).  You may also find C++ material from The Universal Machine (run umcpp on the LANs) useful.  In next week's labs, starting Thursday, 11/21, you will study the multimedia for social and ethical issues (associated with chapter 8 of The Universal Computer) and in the last week's labs, starting Tuesday, 12/3, you will study the multimedia for artificial intelligence (associated with chapter 9 of The Universal Computer). New multimedia for the last two week's of labs will be accessible via cimel.cse.lehigh.edu, and there will be a quiz on these two units  during the last week's labs.

Homework exercises:
Note: do your work on exercises except where the assignment below tells you to work in pairs.
CSc13: The Universal Computer, 8.16, 8.17, 8.20, choose one of (8.25. 8.26 or 8.27), 9.5, 9.11, 9.19, 9.26 and 9.28.  Working in groups of two to four students, analyze and redesign a user interface and submit a report about your findings the last week of class.  (Jarret Raim will explain this part of your assignment in labs and we will update this part of the assignment with more details next week.)
CSc14: Objects First With Java, 5.2, 5.5, 5.6, 5.7, 5.12, 5.13 (note: there is also a math.random() method, shown at the bottom of Figure A.8 in The Universal Computer, so you have a couple of options for the shuffle method in your War program); The Universal Computer, 8.16, 8.17, 8.20, choose one of (8.25. 8.26 or 8.27), 9.5, 9.11, 9.19, 9.26 and 9.28.  Implement the War card game in Java.  A complete class and methods pseudocode design is
now available
.  Pair programming required unless you are excused by Prof Blank or Faisal Khan. Rewrite powers.java, which you implemented in Java for assignment #6, into C++ (there is a pow() function in C++, accessible when you #include <math.h>) and also rewrite the replace method, which you implemented in Java for assignment #7, as a C++ function, using STL strings.  Develop both programs in a C++ programming environment, such as Visual C++, Borland C++ or LOOKOUT), test them, and include documentation in comments at the top of each file with your name(s), user id(s), purpose of the program, and how you tested it.  Working on these C++ exercises in pairs is optional, but both partners must mention the other partner in your homework submission.

Due: Thursday 12/5, 1:10PM, hard copy in class, electronic copy in CSE10 Drop Box (so that TA can review programs if necessary).  For pair designs/programs, each partner should mention their partner's name at the top of their work.  If you need extra time to do this assignment, please put late work in Faisal Khan's mailbox in 304 Packard Lab.

Extra credit: 9.7, 9.8 and/or 9.21. For CSE13 students: Objects First, 5.2 and 5.12. For CSE14 students: you may participate in a usability analysis and redesign team.  You may also rewrite the Game of War program in C++.  And you may add a GUI user interface to the Game of War, using AWT or Swing.  (The required version should just run in a DOS console window, using System.out and possibly Input.)  You may hand in the C++ version of the Game of War or GUI version in Java any time up to Friday, 12/13.  Put a hard copy in Faisal's box in 304 Packard Lab and upload your source code file(s) to Blackboard.

Prof. Blank