Changes

Jump to: navigation, search

OOP344 - 20101

104 bytes removed, 12:03, 12 May 2010
fixed the oop344 index
[[OOP344]] - [[OOP344 Student List]] - [[OOP344 Teams]] - [[OOP344 Assignment One]] - [[OOP344 Assignment Two]]<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!
= OOP344 -- Object Oriented Programming II Using C++=
= 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
== The Project (under construction) ==
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.===Individual work===The Basic Input Output Library, and Main Application
Done individually! Each student must complete and hand her/his own work, no collaboration permitted for this part.=== Basic Input Output Library ===
* C based multi-platform IO functions; (Majority of the code is provided by the prof).* The assignment can be found [[OOP344_Assignment_One|here]]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)]]** [[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.=== Main Applicaton ===
===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 (bec)<br /> This part is written in C++ and encapsulates the '''''io''''' routines into classes* The Text EditorApplication<br />this part is written in C++ and uses the '''''bec''''' "Basic Encapsulating Classes" classes to do full text editinteract with the user== 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]*[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 ==
==Examples==[httpssvn://cszenit.senecac.on.ca/~fardad.soleimanloo/oop344/notes/ Examples and Notes done in class]trunk
==Archives==
[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 =
==Week 2 - Sep 13==
===This Week===
C, a closer look == Week 1 - Jan 10 == === This Week === * Introduction toOpen Source development.* Collaboration Tools:define, include, macros, operators, statement evaluation, return value of main, return value of printf and scanf, Conditional Compilateion ** Wiki** Blog** IRC** Code Repository* 144/244 review
Starting assignment one=== To Do ===
===To Do=== Due date: Jan 12, 2010 , 23:59 (11:59pm)
Due date: Sep -17 - 2009 , 23:59 (11:59pm)
* 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<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]
* ChallengeDownload [http: write this function without using any library functions; void GetInt(char *strint, int val);<br /> this function gets an integer value /subversion.tigris.org/ SVN] and converts it to a string ("strint")* Challenge: Modify [[check out the OOP344 Assignment One#void io_displayrepo(const char *str, int row, int col, int len)|io_display]] function to the shortest code possible. Get the source [httpssvn://cszenit.senecac.on.ca/~fardad.soleimanloo/oop344/) to get the notes/07A-Sep17/ HERE].done in class
==Week 3 - Sep 20= 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]
===This Week=2 - Jan 17 ==
Starting Assignment one, starting the project=== This Week ===
Pointers* Assessment Quiz on ipc144 and oop244* C, pointer arithmetic, pointer a closer look to pointer to....,:
===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 teamdefine, include, macros, 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 *strstatement evaluation, int rowreturn value of main, int colreturn value of printf and scanf, int len){ yada yada yada;}</pre>Conditional Compilation
==Week 4 - Sep 27==* Starting the IO Library
===Topics for this weekTo Do ===* #undef, casting, unsigned variables, multi-dimensional arrays and their pointer notation* pointers to functions, pointers to pointers to pointers to...* typedef, enum
===To Do===* Complete Make sure all your information on last week's "'''To Do"s.''' is up to date* Finalize Teams by end of the week (Sat Oct 3rd)your teams** If Book your first [[OOP344 IRC Schedules | IRC meeting]] with Fardad on #seneca-oop344 (Remember, for the first meeting all team has less than 4 members, either try to merge your team to another team or break up your team and join other teams.should be present)** After finalizing your members make sure Add Coding Rules to your team wiki page is created and inculdes the list of all team members and their informationfollow it in your project** Select and identify a first and second contact person for your groupCoding rules are things like, tab size, indentation size, etc...==Week 5 - Oct 04==
===This WeekResources ===
* Explains pointers and how memory is stored.... [[OOP344_Quiz2_20093|Quiz 2]]* Bits, bitwise operators* a jump ahead and review!, http://augustcouncil.com/~tgibson/tutorial/ptr.html C/C++, Inheritance, polymorphism, encapsulation - Memory and Pointers]
* default parameters, forward declaration, initialization vs. setting, virtual methods, pure virtual methods, abstract base classes== Week 3 - Jan 24 ==
===To DoThis Week ===* Complete last week's "To Do"s, if not done already!* 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* A quick tutorial for SVN: [http://www.owlnet.rice.edu/~comp314/svn.html Source Control in Ten Minutes] * 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==* #define and conditional compilation* Starting the Basic Input Output Functions* Assigning SVN Accounts to teams
===This Week=====To Do == Dynamic Memory allocation ====To do Dynamic Memory Allocation you need:# Pointer of the type of the memory we are allocating. Ex: int* p;# If the pointer is already pointing at another already allocated memory, deallocate it.# Allocate memory and set the pointer to its address.# Use the memory.....# When you are done, deallocate it. Ex: delete [ ] p;
* 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=== * Assignment one is due Thursday Oct 15thBlog* 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, 23only in switch** continue :59-(* Complete past weeks' "To Do"s* goto -:(* A quick tutorial for SVN: [http://www.owlnet.rice.edu/~comp314/svn.html Source Control in Ten Minutes]joining expressions* Get ready for conditional expression (x = a quiz on Dynamic memory allocation and SVN next week.>b?c:d)
==Week 7 - Oct18= To Do ===
=== Resources ===== Week 6 - Feb 14 =====This Week===
* passing aruguments
* Quiz on DMA and SVN
* Assigning SVN Accounts
* IRC Meetings with Teams.
====Topics====
* Linked Lists
* Declaration Modifiers
** const
** auto
** extern
*Real Syntax of main* staticVariable Argument list === To Do === ==== Challenge ==== Write the printf function but call it MyPrint.It should support *%c (character)* auto%s (string)*%d (integer)* register%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 === * volatileThursday 23:59: BIOL due.* Passing arguments as command line argurments* 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.* Variable argument list* 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===
* Upload your sources to SVN=== Resources ===
* Do Test Checkouts, builds and commits.== Week 10 - Mar 14 ===== This Week ===
==Week 8 - Oct 25==* Sunday 11:59 Project 0.5 due.===This Week===** create a PRJ_0.5 branch of a tested and compiled trunk* Study break* PRJ_0.5 should a be working project with almost 50% of the functionalities finalized* IRC classes * 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
==Week 9 - Nov 1=====This WeekTo Do ===
====Test One=Resources ===
Test one on Monday and Tuesday (Nov 2 and Nov 3) ==Week 11 - Mar 21 ====Topics=This Week ===* Linked Lists (continued)** doubly-linked** trees (introduced)
==Week 10 - Nov 8=To Do ====This Week=======Topics====* File Streams** what are cin and cout** fstream, ifstream, ofstream* Binary Fill Access** read, write, append, truncate (ios::in, ios::out, ios::app, ios::ate, ios::trunc, ios::binary)
=== Resources ===
==Week 11 12 - Nov 15Mar 28 =====This Week=======Topics====* Binary Fill Access (continued)** seeking and getting the current location in a file** index files, hashes, searches* inline functions
==Week 12 - Nov 22=To Do ====This Week=======Topics====* Templates** function templates** class templates* Statics** Declaration Modifiers** methods** extern
==Week 13 - Nov 29=====This WeekResources ===
==Week 13 - Apr 4 ====Test Two=This Week ===* Test 2; everything from ipc144 to now about C and C++ language.* Sunday 11:59, Prj_1.0 is due.
Test Two, Monday and Tuesday (Nov 30 and Dec 1)===To Do =Topics====* multiple inheritance* Base classes** virtual base classes** abstract base classes (revisited)* exception handling
==Week 14 - Dec 6=====This WeekResources ===
==Week 14 - Apr 11 ==Exam=== This Week ===
Exam on Thursday Dec, 10th, room T4040 14:00====Topics=To Do ===
* casting and run time information* standard template library (introduced)=== Resources ===
== Exam Week - Apr 18 ==* reviewExam April 20th, 14:00 (2 PM) Room T4040

Navigation menu