Difference between revisions of "OOP344 - 20101"

From CDOT Wiki
Jump to: navigation, search
(Week 6 - Oct 11)
(fixed the oop344 index)
 
(121 intermediate revisions by 17 users not shown)
Line 1: Line 1:
[[OOP344]] - [[OOP344 Student List]] - [[OOP344 Teams]] - [[OOP344 Assignment One]]<br />
+
<big><big>Object Oriented Programming II Using C++</big></big> with introduction to open source
 +
{{OOP344 Index - 20101}}
  
 
Please help make this page resourceful for all OOP344 students to use!
 
Please help make this page resourceful for all OOP344 students to use!
= OOP344 -- Object Oriented Programming II Using C++=
 
  
==[https://scs.senecac.on.ca/course/oop344 Subject Description and Course Outcomes]==
+
= OOP344 -- Object Oriented Programming II Using C++ =
 +
 
 +
== [https://scs.senecac.on.ca/course/oop344 Subject Description and Course Outcomes] ==
  
 
* Please visit the [https://scs.senecac.on.ca School Of Computer Studies] website for the [https://scs.senecac.on.ca/course/oop344 detailed description] of the subject
 
* Please visit the [https://scs.senecac.on.ca School Of Computer Studies] website for the [https://scs.senecac.on.ca/course/oop344 detailed description] of the subject
  
== The Project ==
+
== The Project (under construction) ==
  
The project for this semester is a multiplatform text based, Text Editor.<br />
+
The project for this semester is a multiplatform text based, Text Editor and is done using opensource concepts<br />
  
The project is divided into 2 main parts.
+
The project is divided into 2 main parts. The Basic Input Output Library, and Main Application
===Individual work===
 
  
Done individually! Each student must complete and hand her/his own work, no collaboration permitted for this part.
+
=== Basic Input Output Library ===
  
The assignment can be found [[OOP344_Assignment_One|here]].
+
* C based multi-platform IO functions; (Majority of the code is provided by the prof).
 +
* The Project is initiated on individual SVN accounts for each team
 +
* Each team member is to commit a section of the code and resolve possible conflicts.
  
* [[OOP344 Assignment One#Console Input Output Library|Console Input Output Library (ciol)]]
+
=== Main Applicaton ===
** [[OOP344 Assignment One#Basic Console Input Output|Basic Console Input Output (io)]]: <br /> This part is written in C language. It is responsible for handling basic input output features needed to interact with the console
 
** [[OOP344 Assignment One#Line and Selection Editor|Line and Selection Editor:]]<br /> This part is written in C Language and only uses bcio routines, to interact with the console.
 
*** [[OOP344 Assignment One#Line Editor: int io_edit(........)|Line Editor]]<br /> This is responsible for making a full edit on a single line of text and also provide basis for a multi-line text editor.
 
*** [[OOP344 Assignment One#Selection Editor|Selection Editor]]<br /> It provides means (A Checkbox) to create selection lists or Yes/No queries.
 
  
===Open Source===
+
This part will be done collaboratively in groups of 4 - 8 students under a simulated open source model
  
This part will be done collaboratively in groups of 4 - 8 students under a simulated open source model
+
* Basic Encapsulating Classes <br /> This part is written in C++ and encapsulates the '''''io''''' routines into classes
* Basic Encapsulating Classes (bec)<br /> This part is written in C++ and encapsulates the '''''io''''' routines into classes
+
* The Application<br />this part is written in C++ and uses the "Basic Encapsulating Classes" classes to do interact with the user.
* The Text Editor<br />this part is written in C++ and uses the '''''bec''''' classes to do full text edit.
+
 
 +
== Grading ==
  
==Grading==
+
* Tests
 +
** Test 1    10%
 +
** Test 2    10%
 +
** Quizzes  10%
 +
* Project
 +
** IO Library 3%
 +
** Application  17%
 +
** Contribution 10%
 +
* Final Exam 40%
  
To be completed
+
== Resources ==
  
==Resources==
+
* Class notes can be found here: svn://zenit.senecac.on.ca/oop344
 +
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]
 +
* [http://subversion.tigris.org/ Subversion (SVN)]
 +
* [http://tortoisesvn.net/downloads Download Page of TortoiseSVN]
 +
* [http://svnbook.red-bean.com/ SVN book at red-bean.com] or download [https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/svn-book.pdf the PDF from here].
 +
* Mac Lab Available in 2108 as well as in the Computing Commons*
 +
* [http://zenit.senecac.on.ca/wiki/index.php/OOP344_Student_Resources#Create_an_IRC_account_and_login_.28in_Windows.29 Create an IRC account and login (in Windows)]
 +
* [http://irchelp.org/irchelp/irctutorial.html IRC Tutorial]
  
*[http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]
+
== Examples ==
*[http://subversion.tigris.org/ Subversion (SVN)]
 
*[http://svnbook.red-bean.com/ SVN book at red-bean.com] or download [https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/svn-book.pdf the PDF from here].
 
*Mac Lab Available in 2108 as well as in the Computing Commons*
 
  
==Examples==
+
svn://zenit.senecac.on.ca/oop344/trunk
[https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/ Examples and Notes done in class]
 
  
==Archives==
+
== Archives ==
  
[https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/OLD/ Class notes, samples, tests, ... since 2001]
+
[https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/OLD/ Class notes, samples, tests, ... 2001 -> 2009]<br />
 +
checkout svn://zenit.senecac.on.ca/oop344/tags for all the notes since 2001<br />
 +
[[OOP344 20093]]
  
 
= OOP344 -- Weekly Schedule =
 
= OOP344 -- Weekly Schedule =
==Week 2 - Sep 13==
 
===To Do===
 
  
Due date: Sep -17 - 2009 , 23:59 (11:59pm)
+
== Week 1 - Jan 10 ==
 +
 
 +
=== This Week ===
 +
 
 +
* Introduction to Open Source development.
 +
* Collaboration Tools:
 +
** Wiki
 +
** Blog
 +
** IRC
 +
** Code Repository
 +
* 144/244 review
 +
 
 +
=== To Do ===
 +
 
 +
Due date: Jan 12, 2010 , 23:59 (11:59pm)
 +
 
 
* Add your name to the [[OOP344 Student List]]
 
* Add your name to the [[OOP344 Student List]]
* Join the IRC by [http://www.wikihow.com/Register-a-User-Name-on-Freenode registering your nickname on freenode] server and joining the #Seneca channel
+
* Join the IRC by [http://www.wikihow.com/Register-a-User-Name-on-Freenode registering your nickname on freenode] server and joining the #Seneca channel<br />Additional channels of interest:
 +
** #seneca-oop344 for 344 related dialog
 +
** #seneca-social for Social (off-topic) dialog
 
* Create a blog (if you don't already have one) and [[Planet CDOT Feed List|add your feed]] to [http://zenit.senecac.on.ca/~chris.tyler/planet/ Planet CDOT]
 
* Create a blog (if you don't already have one) and [[Planet CDOT Feed List|add your feed]] to [http://zenit.senecac.on.ca/~chris.tyler/planet/ Planet CDOT]
* Challenge: write this function without using any library functions; void GetInt(char *strint, int val);<br /> this function gets an integer value and converts it to a string ("strint")
+
* Download [http://subversion.tigris.org/ SVN] and check out the OOP344 repo(svn://zenit.senecac.on.ca/oop344) to get the notes done in class
* Challenge: Modify [[OOP344 Assignment One#void io_display(const char *str, int row, int col, int len)|io_display]] function to the shortest code possible. Get the source [https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/07A-Sep17/ HERE].
+
 
 +
=== Resources ===
 +
 
 +
* A quick tutorial for SVN: [http://www.owlnet.rice.edu/~comp314/svn.html Source Control in Ten Minutes]
 +
* [http://zenit.senecac.on.ca/wiki/index.php/OOP344_Student_Resources#Creating_Projects_in_Visual_Studio_for_Console_Applications How to create console application projects in Visual Studio]
 +
* [http://zenit.senecac.on.ca/wiki/index.php/OOP344_Student_Resources#Create_an_IRC_account_and_login_.28in_Windows.29 Create an IRC account and login (in Windows)]
 +
* [http://zenit.senecac.on.ca/wiki/index.php/RabbitVCS RabbitVCS - Linux alternative to TortoiseSVN]
 +
 
 +
== Week 2 - Jan 17 ==
 +
 
 +
=== This Week ===
 +
 
 +
* Assessment Quiz on ipc144 and oop244
 +
* C, a closer look to:
 +
 
 +
define, include, macros, operators, statement evaluation, return value of main, return value of printf and scanf, Conditional Compilation
 +
 
 +
* Starting the IO Library
 +
 
 +
=== To Do ===
 +
 
 +
* Make sure all your information on last week's '''To Do''' is up to date
 +
* Finalize your teams
 +
* Book your first [[OOP344 IRC Schedules | IRC meeting]] with Fardad on #seneca-oop344 (Remember, for the first meeting all team members should be present)
 +
* Add Coding Rules to your team page and follow it in your project
 +
** Coding rules are things like, tab size, indentation size, etc...
 +
 
 +
=== Resources ===
 +
 
 +
* Explains pointers and how memory is stored.... [http://augustcouncil.com/~tgibson/tutorial/ptr.html C/C++ - Memory and Pointers]
 +
 
 +
== Week 3 - Jan 24 ==
 +
 
 +
=== This Week ===
 +
 
 +
* #define and conditional compilation
 +
* Starting the Basic Input Output Functions
 +
* Assigning SVN Accounts to teams
 +
 
 +
=== To Do ===
 +
 
 +
* Checkout the repository from trunk and test compile it on different platforms
 +
* Branch the trunk into a branch under your SenecaID in branches
 +
** Checkout your own branch and start working on your part of the assignment
 +
** After each accomplishment in your own branch, modify the code in trunk and commit the code
 +
** Make sure the code committed to trunk is ALWAYS at compiled state with no warnings or errors.
 +
 
 +
=== Challenge ===
 +
 
 +
Without use of any library functions (use only the BIOF functions) create a function called:
 +
 
 +
<big>
 +
void bio_putint(int val)
 +
 
 +
</big>
 +
This function should print the integer at where the cursor is on the screen.
 +
The first two blogs with the correct answer will get 5% bonus for the first test.
 +
The next two blogs optimizing the code of the first two blogs will get 5% bonus for the first test too.
 +
 
 +
=== Resources ===
 +
 
 +
== Week 4 - Jan 31 ==
 +
=== This Week ===
 +
 
 +
* SVN review
 +
* Multi dimension arrays
 +
* void pointers
 +
* pointer to function
 +
 
 +
=== To Do ===
 +
 
 +
* Blog
 +
* Update your wiki student list page
 +
* Divide the assignment into small tasks and assign it to team members
 +
 
 +
=== Resources ===
 +
 
 +
== Week 5 - Feb 7 ==
 +
=== This Week ===
 +
 
 +
* pointer to function
 +
* sizeof
 +
** sizeof structures
 +
* typedef
 +
* union
 +
* control flow
 +
** break, only in switch
 +
** continue :-(
 +
** goto -:(
 +
* joining expressions
 +
* conditional expression  (x = a>b?c:d)
 +
 
 +
=== To Do ===
 +
 
 +
=== Resources ===
 +
== Week 6 - Feb 14 ==
 +
=== This Week ===
 +
 
 +
* Declaration Modifiers
 +
** const
 +
** auto
 +
** extern
 +
* Real Syntax of main
 +
* Variable Argument list
 +
 
 +
=== To Do ===
 +
 
 +
==== Challenge ====
 +
 
 +
Write the printf function but call it MyPrint.
 +
It should support
 +
 
 +
* %c  (character)
 +
* %s  (string)
 +
* %d  (integer)
 +
* %X or %x (integer printed in Hex)
 +
* %f  (double or float no formating, always printed with 2 digit after decimal point)
 +
 
 +
MyPrint("int %d, char %c, string %s, hex %x, float %f", 2, 'A', "hello", 16, 12.34567);
 +
int 2, char A, string hello, hex 10, 12.34
 +
 
 +
=== Resources ===
 +
 
 +
== Week 7 - Feb 21 ==
 +
=== This Week ===
 +
 
 +
* Thursday 23:59: BIOL due.
 +
** Create a branch in tags called BIOL_1.0 and have the final BIOL compiled and tested with released tested program and then commit it to the BIOL_1.0 branch.
 +
** Note that there could be many other tags of BIOL to record your development milestones, but I only mark the highest release not less than 1.0.
 +
 
 +
=== To Do ===
 +
 
 +
=== Resources ===
 +
 
 +
== Week 8- Feb 28  Study Week ==
 +
=== This Week ===
 +
 
 +
=== To Do ===
 +
 
 +
=== Resources ===
 +
 
 +
== Week 9 - Mar 7 ==
 +
=== This Week ===
 +
* Monday Test One. All that you have learnt from ipc144 to this point on C language only.
 +
 
 +
=== To Do ===
 +
 
 +
=== Resources ===
 +
 
 +
== Week 10 - Mar 14 ==
 +
=== This Week ===
 +
 
 +
* Sunday 11:59 Project 0.5 due.
 +
** create a PRJ_0.5 branch of a tested and compiled trunk
 +
** PRJ_0.5 should a be working project with almost 50% of the functionalities finalized
 +
** Note that you may have many other branches in the tag to record your milestones, but the one I mark will be the highest tag NOT less than PRJ_0.5
 +
 
 +
=== To Do ===
 +
 
 +
=== Resources ===
 +
 
 +
== Week 11 - Mar 21 ==
 +
=== This Week ===
 +
 
 +
=== To Do ===
 +
 
 +
=== Resources ===
 +
 
 +
== Week 12 - Mar 28 ==
 +
=== This Week ===
 +
 
 +
=== To Do ===
 +
 
 +
=== Resources ===
 +
 
 +
== Week 13 - Apr 4 ==
 +
=== This Week ===
 +
* Test 2; everything from ipc144 to now about C and C++ language.
 +
* Sunday 11:59, Prj_1.0 is due.
 +
 
 +
=== To Do ===
  
==Week 3 - Sep 20==
+
=== Resources ===
===To Do===
 
* Complete last week's "To Do"s.
 
* Form the teams and [[OOP344 Teams|add your team to the wiki]]
 
** Teams with less than 4 members and more than 8 are not acceptable.
 
** Merge or divide teams if necessary to adjust the number of team members.
 
** Teams' member selection must be finalized by Oct 3rd.
 
** Those without a team, join the teams with least number of members.
 
** Select a team leader who is going to be the contact person for the team.
 
*Challenge 3: using what we learned so far (logical operators, and pointers) write the io_display function in ONE line only(Due Sunday 23:59):
 
<pre>void io_display(const char *str, int row, int col, int len){
 
  yada yada yada;
 
}</pre>
 
==Week 4 - Sep 27==
 
  
===Topics for this week===
+
== Week 14 - Apr 11 ==
* #undef, casting, unsigned variables, multi-dimensional arrays and their pointer notation
+
=== This Week ===
* pointers to functions, pointers to pointers to pointers to...
 
* to be completed....
 
  
===To Do===
+
=== To Do ===
* Complete last week's "To Do"s.
 
* Finalize Teams by end of the week (Sat Oct 3rd)
 
** If your team has less than 4 members, either try to merge your team to another team or break up your team and join other teams.
 
** After finalizing your members make sure your team wiki page is created and inculdes the list of all team members and their information
 
** Select and identify a first and second contact person for your group.
 
==Week 5 - Oct 04==
 
  
* Complete last week's "To Do"s, if not done already!
+
=== Resources ===
* Copy [https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/AS1/as1tester.c as1tester.c] and run the test with your ciol.c and ciol.h
 
* Read first four chapters of [https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/svn-book.pdf the SVN book].
 
* Download SVN and install it on you PC from [http://subversion.tigris.org/getting.html subversion.tigris.org]
 
** windows: [http://tortoisesvn.tigris.org/ Tortoise SVN]
 
** Linux (Fedora: <big><code>yum install subversion</code></big>)
 
** MAC: already in Apple's Developer Tools
 
  
==Week 6 - Oct 11==
+
== Exam Week - Apr 18 ==
*Assignment one is due Wednesday Oct 14th, 23:59
+
* Exam April 20th, 14:00 (2 PM) Room T4040

Latest revision as of 11:03, 12 May 2010

Object Oriented Programming II Using C++ with introduction to open source
OOP344 - 20101 - Student List - Teams - Project - IRC Schedules - Student Resources

Please help make this page resourceful for all OOP344 students to use!

OOP344 -- Object Oriented Programming II Using C++

Subject Description and Course Outcomes

The Project (under construction)

The project for this semester is a multiplatform text based, Text Editor and is done using opensource concepts

The project is divided into 2 main parts. The Basic Input Output Library, and Main Application

Basic Input Output Library

  • C based multi-platform IO functions; (Majority of the code is provided by the prof).
  • The Project is initiated on individual SVN accounts for each team
  • Each team member is to commit a section of the code and resolve possible conflicts.

Main Applicaton

This part will be done collaboratively in groups of 4 - 8 students under a simulated open source model

  • Basic Encapsulating Classes
    This part is written in C++ and encapsulates the io routines into classes
  • The Application
    this part is written in C++ and uses the "Basic Encapsulating Classes" classes to do interact with the user.

Grading

  • Tests
    • Test 1 10%
    • Test 2 10%
    • Quizzes 10%
  • Project
    • IO Library 3%
    • Application 17%
    • Contribution 10%
  • Final Exam 40%

Resources

Examples

svn://zenit.senecac.on.ca/oop344/trunk

Archives

Class notes, samples, tests, ... 2001 -> 2009
checkout svn://zenit.senecac.on.ca/oop344/tags for all the notes since 2001
OOP344 20093

OOP344 -- Weekly Schedule

Week 1 - Jan 10

This Week

  • Introduction to Open Source development.
  • Collaboration Tools:
    • Wiki
    • Blog
    • IRC
    • Code Repository
  • 144/244 review

To Do

Due date: Jan 12, 2010 , 23:59 (11:59pm)

Resources

Week 2 - Jan 17

This Week

  • Assessment Quiz on ipc144 and oop244
  • C, a closer look to:

define, include, macros, operators, statement evaluation, return value of main, return value of printf and scanf, Conditional Compilation

  • Starting the IO Library

To Do

  • Make sure all your information on last week's To Do is up to date
  • Finalize your teams
  • Book your first IRC meeting with Fardad on #seneca-oop344 (Remember, for the first meeting all team members should be present)
  • Add Coding Rules to your team page and follow it in your project
    • Coding rules are things like, tab size, indentation size, etc...

Resources

Week 3 - Jan 24

This Week

  • #define and conditional compilation
  • Starting the Basic Input Output Functions
  • Assigning SVN Accounts to teams

To Do

  • Checkout the repository from trunk and test compile it on different platforms
  • Branch the trunk into a branch under your SenecaID in branches
    • Checkout your own branch and start working on your part of the assignment
    • After each accomplishment in your own branch, modify the code in trunk and commit the code
    • Make sure the code committed to trunk is ALWAYS at compiled state with no warnings or errors.

Challenge

Without use of any library functions (use only the BIOF functions) create a function called:

void bio_putint(int val)

This function should print the integer at where the cursor is on the screen. The first two blogs with the correct answer will get 5% bonus for the first test. The next two blogs optimizing the code of the first two blogs will get 5% bonus for the first test too.

Resources

Week 4 - Jan 31

This Week

  • SVN review
  • Multi dimension arrays
  • void pointers
  • pointer to function

To Do

  • Blog
  • Update your wiki student list page
  • Divide the assignment into small tasks and assign it to team members

Resources

Week 5 - Feb 7

This Week

  • pointer to function
  • sizeof
    • sizeof structures
  • typedef
  • union
  • control flow
    • break, only in switch
    • continue :-(
    • goto -:(
  • joining expressions
  • conditional expression (x = a>b?c:d)

To Do

Resources

Week 6 - Feb 14

This Week

  • Declaration Modifiers
    • const
    • auto
    • extern
  • Real Syntax of main
  • Variable Argument list

To Do

Challenge

Write the printf function but call it MyPrint. It should support

  •  %c (character)
  •  %s (string)
  •  %d (integer)
  •  %X or %x (integer printed in Hex)
  •  %f (double or float no formating, always printed with 2 digit after decimal point)
MyPrint("int %d, char %c, string %s, hex %x, float %f", 2, 'A', "hello", 16, 12.34567);
int 2, char A, string hello, hex 10, 12.34

Resources

Week 7 - Feb 21

This Week

  • Thursday 23:59: BIOL due.
    • Create a branch in tags called BIOL_1.0 and have the final BIOL compiled and tested with released tested program and then commit it to the BIOL_1.0 branch.
    • Note that there could be many other tags of BIOL to record your development milestones, but I only mark the highest release not less than 1.0.

To Do

Resources

Week 8- Feb 28 Study Week

This Week

To Do

Resources

Week 9 - Mar 7

This Week

  • Monday Test One. All that you have learnt from ipc144 to this point on C language only.

To Do

Resources

Week 10 - Mar 14

This Week

  • Sunday 11:59 Project 0.5 due.
    • create a PRJ_0.5 branch of a tested and compiled trunk
    • PRJ_0.5 should a be working project with almost 50% of the functionalities finalized
    • Note that you may have many other branches in the tag to record your milestones, but the one I mark will be the highest tag NOT less than PRJ_0.5

To Do

Resources

Week 11 - Mar 21

This Week

To Do

Resources

Week 12 - Mar 28

This Week

To Do

Resources

Week 13 - Apr 4

This Week

  • Test 2; everything from ipc144 to now about C and C++ language.
  • Sunday 11:59, Prj_1.0 is due.

To Do

Resources

Week 14 - Apr 11

This Week

To Do

Resources

Exam Week - Apr 18

  • Exam April 20th, 14:00 (2 PM) Room T4040