CES 203 - Programming Practicum
Deepens and develops the programming knowledge and skills through more complex projects done in teams. Includes an introduction to a true object oriented language (e.g. C++, Objective C, or Java) and focuses on how the language architecture and syntax support the OOP semantics learned in CES 202. Introduces advanced project management tools, advanced debugging and testing methods. Prerequisites: TCES202.
Students entering this course need mastery over the following:
The overall objective of this sequence of courses is to get you ready for the many problem solving situations in computer engineering that involve general purpose programming in a high-level language. In the third course you will learn oneor more object-oriented languages as well as the basic language (C) that will prepare you for most of the courses ahead in CES.
By the end of the sequence you should be able to write fairly large programs (> 1,000 lines of code) starting from a functional description (or requirements, telling what the program should do). You will learn how to generate functional specifications (specifying HOW the program will meet its functional requirements), external and internal documentation, and program design and implementation.
This course will prepare you to understand true Object-Oriented Programming (OOP) to which you will be introduced in 203 in the form of C++ and Java. By the end of 203 you will be prepared to tackle any and all of the engineering programming problems you will encounter in multiple languages.
Student Learning Goals
In addition to the knowledge aspects of programming discussed above, the overall learning goals for students include being able to:
Program Learning Outcomes
Learning outcomes are the capabilities that you will acquire here and take with you into the workplace. They are program-specific learning outcomes reinforced in most of the other courses. These and many more are developed in all of your courses in the CES program. The ones that we will focus on in this class are:
Grades will be based on a percentage of total points acquired through a variety of exams, in-class assignments, programming assignments and possibly quizzes.
Assessment of Learning Objectives
This schedule will be refined and posted on the Moodle site. Please refer to that site often as subjects may change based on class progress.
Test make-upsI will give make-up midterm exams only with prior permission or written excuse.
Academic HonestyUnless otherwise indicated, homework assignments are to be completed on an individual basis. Academic dishonesty is any act of turning in work that is not your own, but representing it as your own. This includes program code, homework and exam answers. I also consider any act of providing others with your work so that they can copy it as an act of dishonesty. Any such act will result in an automatic failing grade on the assignment/exam. Any subsequent repeats may result in a failing grade for the course and reporting of the incident to administration.
You should feel comfortable discussing topics, including general approaches to assignments, in a collaborative atmosphere. Discussing concepts and methods to be applied to problems is often a tremendous aid to studying. But when it is time to sit down and write down answers or program code, you should work on your own.
In this class lectures are short talks to cover principles regarding language constructs and programming practices. They will be followed by exercises (some graded, some not) so total lecture time is kept short compared with practice time. However, based on the subject matter times can vary.
Attendance is not mandatory. However, there will be graded exercises on occassion during classes and if you miss these and do not have a medical or other legitimate excuse you will not be able to make them up.
I maintain regular office hours (see above), but have a general open door policy. If my door is open (even if only cracked open) I am in and willing to take walk-in visits. If my door is closed, even if you know I am in my office, I am not available at that time, so please do not knock.
I sincerely encourage all students to drop by several times during the quarter even if you don't have a specific problem or question. It is good to get to know one another. But if you are having problems you need to come see me for certain. Don't be shy. I really don't bite.
Moodle Web Site
Currently we use Moodle for course management (https://moodle.insttech.washington.edu/). Please be sure to check in frequently as most information on the course and all assignments will be made through that site.
There will also be a collaborative forum set up for students to participate with questions and answers as well as sharing interesting programming information and web site links. You are encouraged to use this forum for communications outside of class time.