CIS 3020 Part 1

From In The Wings
Jump to navigation Jump to search

Introduction to CIS

Introduction to:

  • The art and science of programming
  • The fundamentals of computer science
  • The basic concepts of Object Orientation:
    • Abstraction - representing the key features
    • Polymorphism - "many forms"
    • Inheritance - reuse of existing code from ancestors
    • Encapsulation - containing and controlling access to

What this course entails

  • This course is not a Java programming course
  • "Introduction" does not mean "easy"
  • Prior programming experience is strongly recommended
    • in none, take CIS 3022/3023
  • This course moves quickly, so attempt assignments early
  • Don't get discouraged if you feel confused after one week of class. You hopefull will feel more comfortable by the 3rd week.

Philosophy

  • Goal is to learn fundamental principles of programming and obtain an overview of the field of computer science.
  • This goal is independant of any language
  • Java is used to make these principles concrete but "learning Java" is not the primary goal of the course.
  • We will not cover most or all of Java.
  • We will teach the basics with emphasis on thinking and analysis.

Class Web Page

WebCT/Vista
Douglas Denkel's Homepage

  • Announcements, homework assignments, etc. will be posted here.
  • You are responsible to be aware of what information is there.
  • Check it frequently -- no less than every other day!

Lecture Notes

  • Copies of the lecture slides are available in the Lectures folder in WebCT/Vista
  • These slides do NOT contain everything on my slides to encourage you to come to class.
  • You are strongly encouraged to print a copy of these notes.
  • Having a copy will make taking notes significantly easier!

Grading

Option 1
15%
20%
30%
-
20%
15%

Option 2
15%
15%
15%
20%
20%
15%


Examination 1
Examination 2
Examination 3
Final
Pop quizzes and in class exercises
Group/Ind Homework Assignments

What to Expect

  • Difficulty: This course has had a drop rate as high as 33%
  • Effort Required: Expect to spend a minimum of 10 hours/week
  • Intended for: Those needing a firm foundation in CS principles (majors)
  • Education Value: Understanding the vocabulary of CS and concepts of OOP (Object-Oriented Programming)

Necessary Skills

  • Helpful to know Java, but not a requirement
  • Prior programming experience is helpful
  • Willingness to work outside of class
  • Willingness to work in groups
  • Self discipline
  • Ability to tolerate frustration
  • Ability to switch between high and low level views
  • Ability to think abstractly
  • Ability to see what is actually there:
       This is the
       the answer
    • The computer executes exactly what you give it
    • The ability to see the duplicate "the" can greatly help in debugging code

Self Test

  1. If (a<b) then x=a & y=b otherwise x=b & y=a
  2. z=0
  3. if (x<=0) goto step 7
  4. z=z+y
  5. x=x-1
  6. goto step 3
  7. print z
  • What did the author of this algorithm intend for it to do?
  • For what values of a & b does the algorithm work as intended?
  • How many times is step 3 executed?

Should I stay?

  • If you found the self test to be easy or not difficult in spite of no prior programming experience, then this course should not be too difficult for you.