Object Oriented Programming Object Oriented Programming: Course IT Course #: It 114
Object Oriented Programming Object Oriented Programming: Course IT Course #: It 114
COURSE I T
Object Oriented Programming
COURSE #: I T 1 1 4
Course FAQ
Who is the instructor?
Sourish Dasgupta (sour-ish)
Wh h ld b i t t d i th ? Who should be interested in the course?
Anyone who loves to i magi nethe computer doing what we do
& howwe do!
Anyone who likes playing Logo (and other build-up games).
Anyone who wants a job in Google/Facebook/Amazon
Who must take the course?
Well we all know!!
What the course is not about
It is NOT a Java programming course p g g
Although lot of Java coding will be there!
It is NOT a design course
Although lot of particular genre of designs will be there!
It is NOT an algorithm course
l h h l f bl l i ill b h ! Although lot of problem solving will be there!
It is NOT a theory of programming course
Although quite a bit of theory will be there! Although quite a bit of theory will be there!
So what it is about?
Understanding a very popular paradigm of building g y p p p g g
software
Object Oriented Programming (OOP)
Applying OOP to develop large-scale software
systems
Web applications (Google search engine Facebook) Web applications (Google search engine, Facebook)
Large-scale distributed systems (Amazon Cloud)
Control systems (NASA space shuttle control) y p
Smart interactive systems (FIFA game)
Living the philosophy over the next 4 months
Why the OOP way?
Goal Goal
To build large-scale software systems
Method
The Logo players way!
Imagining the system as a giant transformer!!
M d f ll t f Made of smaller transformers
Smaller transformers join together (like a jig-saw puzzle)
Transformers have
Appearance
Behavior
Transformers listens to command! (coming from other Transformers listens to command! (coming from other
transformers)
Why not the C way? - I
C follows the functional programming style f p g g y
Functional?
The mathematicians way!
Y = f(x)
Every action you want the system to do is a function (in the
mathematical sense)
Y f(x)
mathematical sense)
System has a set of functions
{f(x)}
Needs to use them sequentially in a logical way to solve a
problem problem
Desired Output = g(Input, {f(x)})
Why not the C way? - II
Whats the deal?
One specific problem a set of functions
Who solves the problem?
A single transformer the main function
Why is that bad?
h if l i l f d d? What if multiple transformers are needed?
What if they want to talk to each other to solve a problem?
What if you want to have an army of transformers of the What if you want to have an army of transformers of the
same type working on a distributed platform?
What if all of a sudden a transformer wants to be born out of
an existing transformer? an existing transformer?
Do we now throw C out?
The answer is NO!!
Why?
NOT because you spent a whole semester!!
b l f j d l NOT because you love Prof. Majumder a lot!
NOT because you are comfy with C
But then? But then?
You can make a single transformer do exactly what multiple
transformers can do together
A single SOLID unbreakable giant transformer
Great for systems that dont need multiple transformers
Compilers Compilers
OS Kernel
God!! I am confused! OOP or not??
Difficulty is:
d h Cs giant is a mega giant as compared to the non-existent
virtual OOP giant
Huge piles of functions if large-scale system
Functions are tightly interconnected (logic web)
Changes are difficult
Why virtual? Why virtual?
You code only the pigmy transformers
Somehow they manage to interact
Gives the user the illusion of a giant transformer
Sweet days for coders!
Excellent C-coded system = OOP based system!! Excellent C coded system = OOP based system!!
(in principle)
What ahead?
We think large-scale
We imagine anthropomorphically
Everything (almost) is a transformer
f hi k d d h Transformers think and eat and have appearance
We solve interesting tricky problems the
transformer way! transformer way!
We get to do a project the large-scale way!
We code in Java (anyone has fascination for C++?) We code in Java (anyone has fascination for C++?)
Code code code code code code
The bottom-line
Aspiration the Super OOP Coder!
Requirement
Thorough understanding of the OOP style
The course guarantees you to give that (if you attend!) The course guarantees you to give that (if you attend!)
Hand-memory coding skill
Lots and lots of practice
Sh j f ki h hi d l h i d Sheer joy of making the machine do exactly what you intend
Lot of patience
Demystification y
Women cannot be super coders!
Super coders are obtuse nerds!
Too difficult! I cannot do it! Too difficult! I cannot do it!
Important Trivia Important Trivia
The class will be divided into groups
Every group will be assigned a TA
TAs duties include:
Grading Grading
Conducting Lab Sessions
Taking attendance
Every group will have specific dated lab sessions Every group will have specific dated lab sessions
Lab sessions include:
Working out assignment problems
Problems will be given on every Friday before a lab week starts Problems will be given on every Friday before a lab week starts
After-lecture doubts to be directed to corresponding
group TA first
Via emails (1
st
preference) DO NOT cc me in the 1
st
attempt Via emails (1 preference) DO NOT cc. me in the 1 attempt
In lab sessions (2
nd
preference)
Exam Pattern Tentative
Number: Mid-Semester & End-Semester
f Nature of exam:
ONLY coding
NO theoryy
# of problems: random 6 (out of at least 10)
Random 4 known (difficult) will be given by min. 2 weeks before
2 unknown (easy) 2 unknown (easy)
Mode of exam:
Lab sessions for each group
Every session will have different sets of problems
Coding in Microsoft Word/Google doc
Testing on Eclipse IDE AFTER final submission of coding Testing on Eclipse IDE AFTER final submission of coding
Submission through email ([email protected])
Grading Policy Grading Policy
Scaled grading
P lt f l b 6 % Penalty for class absence <= 60%
Penalization directly proportional to the percentage less than the
60% threshold
NO li i if d 8 % ( l d ) NO penalization if student gets 80%+ (scaled score)
IF YOU ARE CONFIDENT ENOUGH AND UTTERLY BORED
WITH ME!!
R d f l 8 % d l d Reward for class presence >= 80% and scaled score
70%+
Reward directly proportional to percentage more than the 80%
d h h ld attendance threshold
MAXIM: You never learn if you are just for scores!
Recommended Books
Difficult to say!!! there are lots
MAXIM: Anything that suits YOU!
What suited me?
Java The Complete Reference (Schildt)
Introduction to Java Programming, Comprehensive (Liang)
Wh t l k t t ? What looks great to me now?
Object-oriented programming in Java A graphical
Approach (Sanders & van Dam) pp ( )
Object-oriented Thought Process (Weisfeld)
Questions? Questions?