Difference between revisions of "OOP344"

From CDOT Wiki
Jump to: navigation, search
(Archives)
(OOP344 -- Object Oriented Programming II Using C++: Added exam topics section)
 
(167 intermediate revisions by 28 users not shown)
Line 1: Line 1:
 
 
 
<big><big>Object Oriented Programming II Using C++</big></big>  with introduction to open source
 
<big><big>Object Oriented Programming II Using C++</big></big>  with introduction to open source
{{OOP344 Index}}
+
{{OOP344 Index Extended | 20141}}
  
 
Please help make this page resourceful for all OOP344 students to use!
 
Please help make this page resourceful for all OOP344 students to use!
 +
 +
Short link for current page:  [https://bit.ly/oop344 bit.ly/oop344]
  
 
= OOP344 -- Object Oriented Programming II Using C++ =
 
= OOP344 -- Object Oriented Programming II Using C++ =
 +
== Exam Topics ==
 +
* The topics on the exam are listed in this [https://docs.google.com/document/d/1r2l-ErNeT6Sul7X8OiOD_GknA48BIuy7i931TO0UifE/edit?usp=sharing google doc]
 +
* While studying for the exam, it is most efficient to spend your time '''only''' on what is listed
 +
* Study other topics only when you've exhausted the listed topics
 +
* The bitwise operations workshop is a good exercise for bit operations
  
== [https://scs.senecac.on.ca/course/oop344 Subject Description and Course Outcomes] ==
+
== IRC ==
 +
* Server: irc.freenode.net
 +
* Channel: #seneca-oop344
  
* 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
+
== Professors ==
 +
* Hasan Kamal-Al-Deen
 +
** Skype: hasan.kamal.al.deen
 +
** IRC: northWind, northAway, northBot ('''IRC Bot''')
 +
** Website: [https://scs.senecac.on.ca/~hasan.kamal-al-deen https://scs.senecac.on.ca/~hasan.kamal-al-deen]
 +
** Schedule: [https://scs.senecac.on.ca/~hasan.kamal-al-deen/?q=schedule https://scs.senecac.on.ca/~hasan.kamal-al-deen/?q=schedule]
 +
** Office Hours:
 +
*** Tuesday: 11:40am - 1:25pm
 +
*** Thursday: 1:30pm - 3:15pm
  
== The Project (under construction) ==
+
* [[Greg Blair]]
 +
** Email: [mailto:john.blair@senecacollege.ca john.blair@senecacollege.ca]
  
The project for this semester is a multiplatform text based, Text Editor and is done using opensource concepts<br />
+
<!--
 +
*: IRC: server: irc.freenode.net, channel: #seneca-oop344
 +
* [[user:CloudScorpion|Joseph Hughes]]
  
The project is divided into 2 main parts. The Basic Input Output Library, and Main Application
+
* [[user:Fardad|Fardad Soleimanloo]]
 +
*: Online office status: '''''(OFFLINE)'''''
 +
*:[https://bbb.senecacollege.ca BigBlueButton], (login using your seneca userid and password)<br /> meeting name: OOP344 Online Office, password: oop344
 +
*:: <small>''you must have headset OR headphones and microphone for voice chat, you CAN NOT use computer speakers for voice chat because of</small>
 +
*: Skype:  sosfardad
 +
-->
  
=== Basic Input Output Library ===
+
== Examples and In-class Notes==
 +
* A/C Section - inclass notes: [https://github.com/Seneca-OOP344/20141notes.git git@github.com:Seneca-OOP344/20141notes.git]
 +
* B Section - inclass notes: [https://github.com/CaptGreg/SenecaOOP344-attic.git git@github.com:CaptGreg/SenecaOOP344-attic.git]
  
* C based multi-platform IO functions; (Majority of the code is provided by the prof).
+
<!-- OLD STUFF
* 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 ===
+
svn://zenit.senecac.on.ca/oop344  (userid: oop344, no password)  <--- You need to install SVN to open the link. <br/>
 +
--><!--
 +
Link was not working. link updated.
 +
-->
  
This part will be done collaboratively in groups of 4 - 8 students under a simulated open source model
+
== [https://scs.senecac.on.ca/course/oop344 Subject Description and Course Outcomes] ==
  
* Basic Encapsulating Classes <br /> This part is written in C++ and encapsulates the '''''io''''' routines into classes
+
* 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 Application<br />this part is written in C++ and uses the "Basic Encapsulating Classes" classes to do interact with the user.
+
 
 +
== The Project ==
 +
* TBA
 +
 
 +
== Exam Schedule ==
 +
* TBA
  
 
== Grading ==
 
== Grading ==
  
* Tests
+
* Tests 30%  
** Test 1    10%
+
** Quizzes  
** Test 2    10%
+
* Project 30%
** Quizzes   10%
+
** Application  30%
* Project
+
** Bonus 10% (till maximum project mark) for completing all [https://scs.senecac.on.ca/~btp300/pages/workshops/index.html workshops]
** IO Library 3%
 
** Application  17%
 
** Contribution 10%
 
 
* Final Exam 40%
 
* Final Exam 40%
  
 
== Resources ==
 
== Resources ==
  
* Class notes can be found here: svn://zenit.senecac.on.ca/oop344
+
* [https://cs.senecac.on.ca/~btp300/pages/content/index.html Object-Oriented Programming I - C++]
 +
* [http://teachingopensource.com/index.php/Textbook_Release_0.8 Practical Open Source Software Exploration]
 
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]
 
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]
 +
* [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet How To edit Wiki Cheatsheet]
 +
* [http://www.possibility.com/Cpp/CppCodingStandard.html C++ Coding Standard]
 +
* Mac Lab Available in 2108 as well as in the Computing Commons*
 +
* [http://zenit.senecac.on.ca/wiki/index.php/OOP344_Student_Resources#The_Basics_of_IRC IRC Basics]
 +
* [http://irchelp.org/irchelp/irctutorial.html IRC Tutorial]
 +
* How to Install [http://wiki.tryphon.eu/how_to_install_xchat XChat] ([http://www.silverex.org/download/ XChat 2 <free>])
 +
* [http://colloquy.info/downloads.html Colloquy] an IRC Client for Mac
 +
* [http://en.cppreference.com/w/cpp/language/operator_precedence C++ Operator Precedence] C++ Operator Precedence
 +
* [https://github.com/languages/C%2B%2B Open Source C++ projects on GitHub] For those who wants to try their knowledge, you can participate in Open Source C++ Projects on GitHub. Just click the link, choose project for you and start working on it, as simple as that.
 +
* [http://www.sgi.com/tech/stl/ Standard Template Library Programmer's Guide]
 +
 +
<!-- OLD stuff: to be updated
 +
* [[initial Steps to succeed in OOP344]]
 +
* Class notes can be found here: svn://zenit.senecac.on.ca/oop344 (userid: oop344, no password)  <--- You need to install SVN to open the link.
 
* [http://subversion.tigris.org/ Subversion (SVN)]
 
* [http://subversion.tigris.org/ Subversion (SVN)]
 +
* [http://subversion.apache.org/packages.html Subversion (SVN) Binary Packages]
 
* [http://tortoisesvn.net/downloads Download Page of TortoiseSVN]
 
* [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].
+
* [http://tortoisesvn.net/docs/release/TortoiseSVN_en/index.html TortoiseSVN Documentation]
* Mac Lab Available in 2108 as well as in the Computing Commons*
+
* [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].
*[http://zenit.senecac.on.ca/wiki/index.php/OOP344_Student_Resources#Create_an_IRC_account_and_login_.28in_Windows.29Create an IRC account and login (in Windows)]
+
* Using [[SVN for School Projects]]
* [http://irchelp.org/irchelp/irctutorial.html IRC Tutorial]
+
* [http://www.rapidsvn.org/download/release/0.12/RapidSVN-0.12.0-8051.dmg RapidSVN] a SVN Client for Mac
 +
* [http://ankhsvn.open.collab.net/ AnkhSVN - Free Visual Studio SVN Integration Alternative To VisualSVN]
  
== Examples ==
 
  
svn://zenit.senecac.on.ca/oop344/trunk
+
-->
  
 
== Archives ==
 
== Archives ==
 +
<!-- OLD REPO
 +
checkout svn://zenit.senecac.on.ca/oop344/tags for all the notes since 2001  (Userid: oop344 | No password) <--- You need to install SVN to open the link.
 +
-->
 +
<br />
 +
===Inclass Notes===
 +
*[https://github.com/Seneca-OOP344/fardad-archive.git git@github.com:Seneca-OOP344/fardad-archive.git]
 +
===Weekly Schedules===
  
[https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/OLD/ Class notes, samples, tests, ... 2001 -> 2009]<br />
+
*[[OOP344 20093 | OOP344 - 20093]]<br/>
checkout svn://zenit.senecac.on.ca/oop344/tags for all the notes since 2001<br />
+
*[[OOP344 - 20101]]<br />
[[OOP344 20093]]
+
*[[OOP344 Weekly Schedule 20102 | OOP344 - 20102]]<br />
[[OOP344 - 20101]]
+
*[[OOP344 Weekly Schedule 20103 | OOP344 - 20103]]<br />
 
+
*[[Weekly Schedule 20111 - OOP344 | OOP344 - 20111]]<br />
= OOP344 -- Weekly Schedule =
+
*[[Weekly Schedule 20112 - OOP344 | OOP344 - 20112]]<br />
 
+
*[[Weekly Schedule 20113 - OOP344 | OOP344 - 20113]]<br />  
== Week 1 - Jan 10 ==
+
*[[Weekly Schedule 20121 - OOP344 | OOP344 - 20121]]<br />
 
+
*[[Weekly Schedule 20123 - OOP344 | OOP344 - 20123]]<br />
=== This Week ===
+
*[[Weekly Schedule 20131 - OOP344 | OOP344 - 20131]]<br />
 
+
*[[Weekly Schedule 20132 - OOP344 | OOP344 - 20132]]<br />
* Introduction to Open Source development.
+
*[[Weekly Schedule 20133 - OOP344 | OOP344 - 20133]]<br />
* Collaboration Tools:
+
*[[Weekly Schedule 20141 - OOP344 | OOP344 - 20141]]<br/>
** 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]]
 
* 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]
 
* 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
 
 
 
=== 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_ApplicationsHow 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.29Create 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 ===
 
 
 
=== Resources ===
 
 
 
== Week 14 - Apr 11 ==
 
=== This Week ===
 
 
 
=== To Do ===
 
 
 
=== Resources ===
 
 
 
== Exam Week - Apr 18 ==
 
* Exam April 20th, 14:00 (2 PM) Room T4040
 

Latest revision as of 14:58, 10 April 2014

Object Oriented Programming II Using C++ with introduction to open source
OOP344 | Weekly Schedule | Student List | Teams | Project | A1 | A2 | A3 | Student Resources

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

Short link for current page: bit.ly/oop344

OOP344 -- Object Oriented Programming II Using C++

Exam Topics

  • The topics on the exam are listed in this google doc
  • While studying for the exam, it is most efficient to spend your time only on what is listed
  • Study other topics only when you've exhausted the listed topics
  • The bitwise operations workshop is a good exercise for bit operations

IRC

  • Server: irc.freenode.net
  • Channel: #seneca-oop344

Professors


Examples and In-class Notes


Subject Description and Course Outcomes

The Project

  • TBA

Exam Schedule

  • TBA

Grading

  • Tests 30%
    • Quizzes
  • Project 30%
    • Application 30%
    • Bonus 10% (till maximum project mark) for completing all workshops
  • Final Exam 40%

Resources


Archives


Inclass Notes

Weekly Schedules