sethi comp syllabus Comp Syllabus by nikeborome


									               Comp 217: Unix and C/C++ Programming with Lab
               Professor: Ricky J. Sethi

Sethi Family HomePage » Classes » Comp217 » Syllabus

Comp 217                                               Syllabus                              Summer

                          Professor    Ricky J. Sethi
                          Email        rickys @
                          HomePage This page! (
                          Phone        909-868-4031
                          Office Hours By appointment in the Adjunct Office

Catalog Description

This course introduces computer programming and emphasizes solving real-world problems in the GNU UN
programming environment. Given a problem statement, students are guided through the user view, designer v
and programmer view to develop solutions to the problem. Basic C/C++ programming skills are developed in
problem-solving process. In the lab, students use C/C++ syntax to develop software solutions to problems rel
electronics and computer technologies, and test and debug prior to finalizing program documentation.

Pre-requisite COMP-125 or COMP-100
Credit hours Comp 217 is 5 hours.
Meetings        Monday 3p.m. - 6p.m., Room 206
                Wednesday 2p.m. - 5p.m., Room 107

Texts and Materials




      The Waite Groups C++ Primer Plus by Stephen Prata

      Simple C++: Featuring Robodog and the Profound Object-Oriented Programming Method (POOP) by
       Jeffrey M. Cogswell
      Thinking in C++ by Bruce Eckel
      Absolute Beginner's Guide to C by Greg Perry

Attendance Policy

Each student is required to attend every lecture and laboratory in which he or she is enrolled. A swipe-card te
in each classroom is used to record attendance electronically. Students are responsible for arriving before clas
begins, sliding their identification card through the wall-mounted reader, and remaining for the duration of th
course meeting. Students who are absent for two or more days must contact their assigned Academic Coordin
advisement. Students who miss more than five (5) consecutive days of school are in violation of the DeVry
attendance policy and will be dismissed.

Examination Make-Up Policy

Since responsible behaviour -- including daily class attendance -- is expected of all DeVry students, absence
scheduled examination is considered to be an extremely serious matter. It is school policy that no faculty mem
shall be required to schedule a make-up examination unless the student presents a statement from a licensed
physician stating that he or she was physically unable to attend school on the day of the exam. The faculty m
may schedule a make-up for other equally serious reasons, provided that arrangements are made prior to the d
the exam. An individual faculty member may also schedule a make-up exam if, in his or her opinion, a situat
exists that does not fall under the provisions of this policy yet merits special consideration.

Course Grading Standards

A final letter grade is to be awarded to each enrolled student in accordance with the 4.00 grading system show

                                        Letter Percent of
                                                           Grade Points
                                        Grade Total Points
                                        A        90 - 100%      4.00
                                        B        80 - 89%       3.00
                                        C        70 - 79%       2.00
                                        D        60 - 69%       1.00
                                        F        Below 60%      0.00

Academic Integrity Policy
Ideas and learning form the core of the academic community. In all centers of education, learning is valued a
honoured. No learning community can thrive if its members counterfeit their achievement and seek to establ
unfair advantage over their fellow students. The academic standards at DeVry are based on a pursuit of know
and assume a high level of integrity in every one of its members. When this trust is violated, the academic
community suffers injury and must act to ensure that its standards remain meaningful. The vehicle for this ac
the Academic Integrity Policy outlined in the Student Handbook.

The Academic Integrity Policy is designed to foster a fair and impartial set of standards upon which academic
dishonesty will be judged. All students are required to read, understand, and adhere to these standards, which
and specify the following mandatory sanctions for such dishonest acts as copying, plagiarism, lying, unautho
collaboration, alteration of records, bribery, and misrepresentation for the purpose of enhancing one's academ

      The first recorded offense will result in the student receiving zero credit for the entire paper, exam, q
       lab, homework assignment, or other graded activity in which the incident of academic dishonesty occ
       No partial credit may be given. Where the incident involved a graded assignment normally subject to
       "drop" option, the student may not exercise that option.
      The second recorded offense will result in the student receiving a failing grade for the course in whic
       second offese occurs. The second offense need not be in the same course, program, or term as the firs
       offense to invoke this sanction.
      The third recorded offense will result in the student being permanently expelled from the DeVry sys
       Again, the third offense need not be in the same course, program, or term as either the first or second
       to invoke the sanction.


Terminal Course Objectives

Following are the objectives for this course. Individual faculty, based upon their experience and expertise ma
to these objectives to meet local campus needs. Any such additions will be communicated to the class. While
instruction remains focused in helping students, accomplishing these objectives is a shared responsibility of s
and faculty. The outcomes of this course will depend upon the motivation and capabilities of the students, suf
time allocation for studying, and the effectiveness of that effort.

DeVry University is committed to the continual improvement of its curriculum and instruction and to meet th
of students and employers in a rapidly changing global economy. Students, faculty, and the university must a
actively involved to accomplish these objectives, as well as the objectives of this particular course.

   1. Given a problem statement, such as create a program to allow a user to specify all parameters required
      calculate the coefficients of a sinusoid waveform, identify the steps required to solve the problem usin
      engineering design methodology.
   2. Given a defined problem statement such as the sine wave problem described in objective 1, develop a
      algorithm based on the design methodology developed in objective one and using design tools such as
       pseudocode, for a computer programming based solution to the problem.
   3. Given an integrated C programming environment such as Borland Turbo C++, demonstrate an unders
       of the environment by describing the basic functions of each of the integrated development tools.
   4. Given a pseudocoded program, compare and contrast the characteristics and functions of the three con
       structures used to write a structured program.
   5. Given a programming algorithm written in pseudocode, such as the sinewave algorithm described in
       objective 2, modify the algorithm so that all functions are separated into independent and reusable mo
   6. Given a problem statement and C program solution, such as a listing of a program used to solve a sinu
       waveform generation, identify and describe the elements of basic program, including preprocessor dir
       library/include files, data and variable types.
   7. Given a simple, but "bug-ridden" C program and a listing of the compiler errors generated, utilize the
       capabilities of the debugging environment provided with the C compiler in order to analyze and corre
       "bugs" in order to produce the expected output.
   8. Given a problem statement of moderate difficulty, such as the sinusoid generation program, develop a
       algorithm to solve the problem, organize the data using structures with multiple data types and/or arra
       then write, test and debug the corresponding C program implementing the solution.
   9. Given the program solution of objective 8, redesign the program such that all data is passed to functio
       using pointer constants, pointer variables and structure pointers.
   10. Given a problem statement of moderate difficulty, such as the sinusoid generation problem, using a li
       file approach, modify the modular functions to reside in separate, linkable files in order to demonstrat
       modular project management techniques.
   11. Given a problem statement of moderate difficulty, such as the sinusoid generation problem, incorpora
       linkable function/file that will perform advanced input/output capability, such as file I/O, high-resolut
       multi-colored graphics and graphics mode text display of selected data and text.

The goal of the CET program is to produce Computer Engineering Technology professionals to work on team
other specialists to design, develop, produce, test, and maintain complex products and systems. This is accom

   1. Providing an academic program that develops a sound foundation in mathematics, physics, and techni
      sciences, as well as developing competencies in a broad spectrum of technical specialty areas, includi
      instrumentation and controls, microprocessors and computer systems, and wireless and telecommunic
   2. Incorporating a strong laboratory component associated with each technical course. Laboratory work
      includes use of computer hardware, design and test automation software, and test equipment for desig
      implementing, and testing electronic systems.
   3. Integrating general competencies such as applied research, written and oral communications, and team
      in technical and non-technical courses.

Program Objectives: CET students will be able to demonstrate the following skills upon graduation:

   1. Conduct experiments involving electronic systems using modern test gears, interpret test results and u
      to improve products or processes.
   2. Create, implement high-level and Assembly language programs in support of technical activities.
   3. Design, implement, and evaluate hardware and software solutions to complex technical problems usin
      modern tools and methods.
   4. Communicate effectively both orally and in writing.
   5. Work effectively in a team environment.
   6. Apply information literacy and problem-solving skills that support life-long personal and professiona
   7. Evaluate the broader effects of technology and to identify connections between technology and econo
      politics, culture, ethical responsibility, social structure, the environment and other areas.

Program Assessment Criteria: In order to assure that graduates are being successfully prepared to meet the g
objectives listed above, the following criteria are used to assess the program and individual courses. These cr
require the CET graduate to have:

   1. An appropriate mastery of the knowledge, techniques, skills and modern tools of their disciplines.
   2. An ability to apply current knowledge and adapt to emerging applications of mathematics, science,
       engineering and technology.
   3. An ability to conduct, analyze and interpret experiments and apply experimental results to improve
   4. An ability to apply creativity in the design of systems, components or processes appropriate to progra
   5. An ability to function effectively on teams.
   6. An ability to identify, analyze and solve technical problems.
   7. An ability to communicate effectively.
   8. A recognition of the need for, and an ability to engage in lifelong learning.
   9. An ability to understand professional, ethical and social responsibilities.
   10. A respect for diversity and a knowledge of contemporary professional, societal and global issues.
   11. A commitment to quality, timeliness, and continuous improvements.

Course Assessment Criteria: This class is designed to strengthen the students' skills in fulfilling Program
Assessment Criteria 1, 2, 4, 6, 7, 8, 9, 10, and 11.

      Laboratory demonstrations will complement the lecture topics. Emphasis will be on the key concepts
       as many topics as consistent with good, basic understanding can be discussed. It is strongly recommen
       that students scan the experiment procedure prior to the Laboratory class (please refer to the class web
       more timely information before each lab).
      Concepts will be covered by problems and demonstrations in class followed with problems and lab fo
       ups given as homework. Students will present their solutions for class discussion. All projects can be
       collaboration with your team (although individual reports are required).
      There will be a midterm exam in (approximately) week 8 covering topics discussed through week 7. T
       final exam in week 15 will cover all topics.

Library Research Project

The purpose of the library project/oral presentation is to familiarize the students with resources available in th
library, and learn how to use these resources to produce the needed information. Each student is provided wit
course related approved topic to research and provide relevant information in regards to the topic, in form of
   a. The result of this research must be typed as an approximately 10-page report and then orally presented
   b. The cover page of each report must include the course number, topic, names, and the date.
   c. The report is due during the 12th week of the semester and must be orally presented during the same w
   d. Late reports or late oral presentations are not accepted.
   e. This project/oral presentation adds 10% to the total grade.

I usually get quite a few queries from people confused about what topic they should pick or unsure whether t
picked the right one or even if the topic they chose is comprehensive enough for 10 pages. All of these are
legitimiate concerns, of course, but just about all of them can be alleviated by asking yourself a simple questi
answering it as honestly as you can):

"What is it that I've always wanted to find out more about?"

My view on the library research project is that it should be something that YOU want to learn about! I'd like
to serve as an opportunity for everyone to force themselves to learn about something they're genuinely interes
Don't just make this some requirement that you have to fulfill and so you can just copy some stuff and cobble
together into a 10-page report... instead, use this as a rare opportunity to find out about something that actuall
interests you. I'm very flexible about the range of topics and as long as we can draw a tangential relationship
course, I'll probably approve the topic. But it has to truly interest you!

Chapter Reading Memos

Subject matter is covered pretty much in the sequence presented in the required textbook. It is therefore
recommended that you scan the chapters prior to the scheduled lectures to become familiar with new terms th
be introduced. In order to facilitate this, every reading assignment, will have a required reading memo due th
meeting day following the meeting day it was assigned.

The idea is to have you write down questions and other "instantaneous gut reactions" as you do each reading
assignment in the text. It is very important that you create these memos as you read, and on the first pass thro
material. They must not be edited or "cleaned up" afterward, and they should not be just outlines or notes. In
words, your reading memos should not simply be a summary/rehashing of the chapter; instead, they should r
your questions, observations, and insights.

What is the purpose of these reading memos? First, it shows me that you've done the reading. In addition, it
encourages active reading (reading scientific tomes is a very different experience from reading a novel or oth
leisure book where you can passively scan the pages). And, even more importantly, it gives me insight into w
you're learning, and, more significantly, what I might need to concentrate on more in lecture. Lastly, they giv
student's perspective on the material and often point out common misconceptions or exceptional insights.

So why should you do them? Well, if all that insight and learning wasn't sufficient motivation, it might help t
that your reading memos will contribute significantly towards your participation grade (see grading policy be
In addition, I'll be using at least one question from your reading memos on the weekly quizzes.

Format of the reading memo: nothing terribly elaborate. Just have a sheet of paper handy as you read the text
down your notes. As long as they're legible, I'll be happy. They don't have to be any specific length; I'm just l
for your first impressions and questions you might have. As far as the grading is concerned, I'll basically just
checking off if you're doing them or not. So if you hand one in, you'll get the credit for it. But I'll also be read
them so if you want to impress me, come up with some great memos/questions! Finally, if you're more comfo
jotting them on your computer, feel free to email them to me.

Labs, Quizzes, and Groups, oh my!

There will be weekly labs starting Week 1. In addition, we'll have weekly quizzes starting Week 2. The quizz
be based on the reading and the laboratories. In fact, all exams will rely heavily on the labs and the reading.

Starting Week 2, there will be a weekly (closed book) quiz in class based almost entirely on the reading and t
I'll only keep the 8 highest quizzes. In lieu of the homework, you'll be given the opportunity to instead do sel
homework exercises from that chapter. You will thus have the option of either using the homework or the qu
determine your weekly quiz grade up to three (3) times during the semester (note: you must hand the exercise
before the quiz starts and then only the higher of the two grades will count for that week).

Keeping up with the reading and doing the programming exercises, projects, and labs is probably the best wa
learn computer science. But the third, and final, ingredient necessary to truly master software development is
learning. Unlike classes in which doing homework together is discouraged, I would actually like to encourag
collaborate with your colleagues on the programming exercises, projects, and labs. In fact, we'll be forming g
of about two starting in Week 1 and you'll even have the option of doing your projects together as a group (al
everyone will have to turn in a separate report and part of your grade will be based on your group's anonymou
evaluation of you (and your contribution) to ensure no one person does all the work for the group). All real sc
is a truly collaborative enterprise and I hope you'll take full advantage of your peers in this regard.

 Comparison of the Scientific Method and the Engineering Design Process
         The Scientific Method                The Engineering Process
State your question                                   Define a need
Do background research                                Do background research
Formulate your hypothesis (identify variables) Establish design criteria
Design the experiment (establish procedure)           Prepare preliminary designs
Test your hypothesis (Experiment!)                    Built and test a prototype
Analyze the results (draw conclusions)                Test and redesign (as necessary)
Present the results                                   Present the results

Weekly Project Presentations

The weekly project reports/presentations constitute the biggest component of your final grade (please see the
Grading Policy below). These consist of weekly programming exercises assigned to you (or your group) follo
a semi-formal presentation to the class the following week. Not everyone will present every week but everyo
be responsible for completing and handing in their assignment every week.
<Theoretical Rant Here>
Unlike elephants, people forget. We forget everything from buying the ketchup on our trip to the market to th
formulation of the time-dependent form of Schroedinger's equation (which, for the curious, as well as the sad
ih/2π ∂ψ/∂t = Hψ = (T + V)ψ = (-h2/8π2m) ∇ 2ψ + Vψ ). This is, inevitably, your fate as well. Whatever you
use, you will forget. This is why doctors have a continuing education requirement and programmers have doc
at least the M-x doctor within Emacs). Given this enormous attrition rate for knowledge, the purpose of any c
to my mind, is to provide you with a toolset or a way of thinking or approaching a problem which, due to its
genericity, will be utilized on an almost daily basis on a variety of topics. Of course, you'll be learning this ne
mental toolset within the context of this course... so the real purpose of this course isn't to have you memorize
bunch of random facts. No, you'll remember whatever facts you might need in your future endeavours just fin
you'll be using them on a daily basis. What you should learn from this course is a way of thinking and proble
solving... and learn it well enough to apply it to a variety of other scenarios and especially to this particular su
So if the need ever arises for you to refresh your memory (perhaps for the first time) in this subject again, alth
all the words will, once again, seem like foreign gibberish, you'll have acquired a mindset that lends itself rea
rapid comprehension of the material and you'll find that the subject, once obtuse and impossible to comprehe
readily bends to your understanding (as long as you put in the requisite time and effort). THIS is the real goa
</Theoretical Rant Here>

In this class, we'll also emphasize a professional, corporate approach in anticipation of your future employme
a big software development company. Instead of concentrating on the theoretical side (which, being a theoret
my natural inclination), we'll instead emphasize the practical problem-solving and actual coding. The BEST w
learn a subject is to actually DO it (insert your favourite quote to the effect here). And so, an important part o
learning experience will be the weekly presentation of your problem.

This will be an informal, round-table gathering where you'll explain what you did and how you did it. Peer
reviews/inspections are probably THE best way to ensure production of high-quality software (especially for
projects) and you're going to be engaged in just that as you evaluate your peers' work. Here's what they shoul

Guidelines for the weekly presentations:

   1. Description of the problem (from header block documentation)
   2. Your approach to the solution (from header block documentation)
   3. Brief explanation of your algorithm (from header block documentation)
   4. Highlights of the solution code (especially the hairier, more complex parts as shown by the comments
      well-documented code)
   5. How you tested it (the test-driver program)

Each weekly project presentation is worth 10 points:

       Lose 1 point if it doesn't work
       Lose 1 point if the algorithm is incorrect
       Lose 1 point if the documentation is lacking
       Lose 1 point if the test driver program doesn't work
       Lose 1 point for each missing portion that's required


My general policy in terms of grading is to aim, as in most graduate classes, for an average of about a B. This
not, however, mean that you can earn a high grade simply by doing nothing. What it does mean, though, is th
long as you show up for all the classes, do all the homework/quizzes/exams, and complete your projects on ti
you won't ever have to worry about failing the class. So as long as you show up for all the classes and do the
required work, everyone should at least pass the course.

Also, I do allow for some extra-credit throughout the semester which can be applied towards your midterm o
scores only (i.e., it is not applicable towards the project, hw/quiz, or participation scores). If anything strikes
fancy along the way, feel free to talk to me about doing some extra-credit on it.More on my specific expectat
about the extra-credit, etc. later...

The reason for the extra-credit is I want to see everyone get the grade they are willing to work for. Some
suggestions for extra-credit: research a topic that interests you and write a report on it; solve a programming
problem; do extra exercises in the book; etc.

The Grading Policy

Grades will be assigned on a 100% scale but given scores will be based on a curve taking into account the ov
performance of your class.

Labs & Weekly Project
                                    50% Given weekly; lowest 2-3 will be dropped
HW/Quizzes                          15% Given weekly; lowest 2-3 will be dropped
Midterm                             10% 1 given in (approximately) week 8
Final                               15% 1 given in week 15 (comprehensive)
                                           Reading Memos, Professionalism, Attendance, Involvement, Discus
Participation                       10%
                                           Questions, etc.

The Tentative Schedule

This list is intended to act as a planning guide for students. The timing of the Final Exam is definitely in Wee
and Homework/Quizzes are planned weekly. Timing of all activities will be continuously communicated in c
and/or via email.

Changes to Syllabus: The contents of this syllabus are subject to change with appropriate notice to the stude

Week         Mon - Fri                                  Tasks & Assignments
Week 1     Mar 08 - 12 (Mon 08 — No Classes)            • Introduction
                                                        • No Lab
                                                        • No Project Presentation
Week 2    Mar 15 - 19                                • Introduction (Ch. 1)
                                                     • Lab 0
                                                     • No Project Presentation
Week 3    Mar 22 - 26                                • Problem Solving Using C++/Linux (Ch. 2)
                                                     • Lab 1
                                                     • No Project Presentation
Week 4    Mar 29 - Apr 02                            • Completing the Basics (Ch. 3)
                                                     • Lab 2
                                                     • No Project Presentation
Week 5     Apr 05 - 09 (Fri 09 — No Classes)         • Selection Structures (Ch. 4)
                                                     • Lab 3
                                                     • Project Presentation #1
Week 6     Apr 12 - 16                               • Repetition Structures (Ch. 5)
                                                     • Lab 4
                                                     • Project Presentation #2
Week 7     Apr 19 - 23                               • Functions (Ch. 6)
                                                     • Lab 5
                                                     • Project Presentation #3
Week 8     Apr 26 - 30                               Midterm Exam
                                                       • Review
                                                       • No Lab
                                                       • No Project Presentation
Week 9 May 03 - 07                                   • File I/O (Ch. 7)
                                                     • Lab 6
                                                     • Project Presentation #4
Week 10 May 10 - 14                                  • Introduction to Classes (Ch. 8)
                                                     • Lab 7
                                                     • Project Presentation #5
Week 11 May 17 - 21                                  • Arrays (Ch. 10)
                                                     • Lab 8
                                                     • Project Presentation #6
Week 12 May 24 - 28                                  • Introduction to Pointers (Ch. 10 & Ch. 11)
                                                     • Lab 9
                                                     • Project Presentation #7
Week 13 May 31 - Jun 04 (Mon 31 — No Classes) • No Lecture (Holiday)
                                                     • Lab 10
                                                     • Project Presentation #8
Week 14 Jun 07 - 11                                  • Pointers & Structures (Ch. 11 & Ch. 12)
                                                     • Lab 11
                                                     • Review
Week 15 Jun 14 - 18                                  Final Exam
                                                       TBD -- check the front/home page for more announcements (as

The proposed schedule (subject to some flexibility) is: Ch. 1-12

To top