====== Resources ====== For more help on the course, see * [[https://www.eecs.yorku.ca/~jackie/teaching/lectures/index.html#EECS3311_F18|Fall 2018 version of the course]] with slides and recordings * [[http://seldoc.eecs.yorku.ca/doku.php/eiffel/start|eiffel.eecs.yorku.ca]] (Eiffel the language, the method and the IDE) ====== Github and Installation of EiffelStudio on your Laptop ====== EiffelStudio and Mathmodels are installed on our EECS workstations and servers and also on the SEL Virtual Machine. See [[https://www.eecs.yorku.ca/~eiffel/eiffel101/Eiffel101.pdf|Eiffel101]]. If you wish to install EiffelStudio and Mathmodels natively on your Windows or Mac Laptop, use the following guide. {{:wiki:eecs3311-starter-guide.pdf|Starter Guide}} for GitHub, EiffelStudio and Mathmodels **Note**: We do not have the resources to help you do installation on your Laptops, due to the many variations of hardware, operating systems and configuration. Try the SEL-VM, or use the EECS workstations and servers. ====== Lab0 ====== Lab0 is not graded. A TA will be be in the Lab to provide you with help. * [[http://seldoc.eecs.yorku.ca/doku.php/eiffel/hello/start|Using the command line to compile a program]] * Creating a void-safe Calendar project using **eiffel-new** and EiffelStudio IDE: * [[https://youtu.be/woVYZsVV8F8|Video]] * [[http://seldoc.eecs.yorku.ca/doku.php/eiffel/hello/hello2/start|Textual instructions for doing Calendar project]] * [[https://www.eecs.yorku.ca/~jackie/teaching/tutorials/index.html#dbc_tdd| Series of Videos illustrating Design by Contract, Testing and the use of the debugger in the EiffelStudio IDE]]. View these for more detailed instructions. There are many videos at this link. However, for Lab0, we are interested in the following 8 videos titled //Software Design// (//Use of Eiffel Studio for DbC and TDD//): * Create a New Project and Set Clusters * Add the ACCOUNT Class * Add a Class for Testing ACCOUNT * How a Test Case Fails * Use Breakpoints and Debugger * Specify Contracts for Withdraw * Add Transaction and Date into Context * Uniform Access of Account Balance Study and master [[https://www.eecs.yorku.ca/~eiffel/eiffel101/Eiffel101.pdf|Eiffel101]] in the first 3 weeks of the course. ===== Working on your Laptop ===== If you are working on your Laptop, you will need to install the IDE and Mathmodels library (see above **Starter Guide**). You may use the SEL-VM or install natively. (1) Login to prism lab using ssh ssh eecs_account@red.eecs.yorku.ca (2) Create a new Void Safe starter project red > eiffel-new New Eiffel void-safe project name: calendar (3) Copy the new project from your account on Prism to your Laptop. On your Laptop, do: scp -r eecs_account@red.eecs.yorku.ca:~/calendar . where ''~'' denotes your Prism home directory. Example: To copy the library directory with the path /eecs/fac/share/sel/mathmodels/library to the current directory(represented by the dot) scp -r eecs_account@red.eecs.yorku.ca:/eecs/fac/share/sel/mathmodels/library . Once you finish Lab0, immediately proceed to [[:protected:labs:|lab1]] ====== SEL Virtual Machine ====== The SEL Virtual Machine is available [[http://dl.eecs.yorku.ca/sel/eecs-vbox-sel-latest.ova|here]]. For further help, see [[protected:vm:|here]] (login for the password to access the VM). ====== Text Books ====== **Textbooks**: the following texts are recommended and are available on reserve in the Library: * Bertrand Meyer, //Touch of Class: Learning how to Program Well, with Objects and Contracts//, Springer Verlag, revised printing, 2013, book page [[http://touch.ethz.ch/|here]] (this is a complete course with slides, videos and exercises). The text //Touch of Class// is available with online access via Steacie Library. The book describes computational thinking with the Eiffel language. Use this text to learn about **design by contract**, polymorphism, static typing, dynamic binding, genericity, multiple inheritance, and lambda expressions (agents). These are all topics needed for this course. * [**OOSC2**] Bertrand Meyer. //Object-Oriented Software Construction//. Second edition. Prentice Hall, 1997. This is a classic text on software design principles. * //Design Patterns: Elements of Reusable Object-Oriented Software//, 1994, by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides * [[https://wiki.eecs.yorku.ca/project/eiffel/bon:|BON]] (Business Object Notation). The BON method for analysis and design of object-oriented software is a means of extending the higher-level concepts of the Eiffel programming language into the realm of analysis and design aided by a graphical notation akin to but different from UML. BON is described in depth in the book //Seamless Object-Oriented Software Architecture//, Prentice Hall 1994, by Kim Waldén and Jean-Marc Nerson. The book is out of print but is available as a [[http://www.bon-method.com/book_print_a4.pdf|pdf]]. There is a template in Visio to do nice BON diagrams. ====== Other ====== Use this page to list additional Resources that may be helpful to your students. * [[http://www.cse.yorku.ca|Department of CSE Home Page]] * [[https://w2prod.sis.yorku.ca/Apps/WebObjects/cdm.woa/wa/curexam|York Exam Schedule]]