{"id":114,"date":"2018-10-28T04:28:12","date_gmt":"2018-10-28T08:28:12","guid":{"rendered":"https:\/\/opentextbooks.concordia.ca\/disciplineguide2\/chapter\/computing-software\/"},"modified":"2024-05-16T11:16:38","modified_gmt":"2024-05-16T15:16:38","slug":"computing-software","status":"publish","type":"chapter","link":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/chapter\/computing-software\/","title":{"raw":"Computing Science and Software Engineering","rendered":"Computing Science and Software Engineering"},"content":{"raw":"<a href=\"#footer_computingsciencensoftwareengineering\"><img class=\"aligncenter wp-image-906\" src=\"http:\/\/opentextbooks.concordia.ca\/disciplineguidetest\/wp-content\/uploads\/sites\/48\/2018\/10\/ver1-1024x274.png\" alt=\"Button for Call for Collaboration\" width=\"522\" height=\"140\" \/><\/a>\r\n<h2 style=\"text-align: left\"><img class=\"alignnone wp-image-1201\" src=\"http:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2-280x300.png\" alt=\"\" width=\"55\" height=\"59\" \/>\u00a0 \u00a0Open Textbooks and Concordia Courses<\/h2>\r\n<table style=\"border-collapse: collapse;width: 100%;height: 150px\" border=\"0\">\r\n<thead>\r\n<tr style=\"height: 61px\">\r\n<td style=\"width: 74.2909%;height: 61px\"><strong>Open Textbook Title<\/strong><\/td>\r\n<td style=\"width: 42.0727%;height: 15px\"><strong>Potentially Relevant Courses<\/strong><\/td>\r\n<\/tr>\r\n<\/thead>\r\n<tbody>\r\n<tr class=\"shaded\" style=\"height: 50px\">\r\n<td style=\"width: 74.2909%;height: 15px\">Discrete Mathematics: An Open Introduction<\/td>\r\n<td style=\"width: 42.0727%;height: 15px\">COEN 231<\/td>\r\n<\/tr>\r\n<tr style=\"height: 50px\">\r\n<td style=\"width: 74.2909%;height: 15px\">Book of Proof<\/td>\r\n<td style=\"width: 42.0727%;height: 15px\">COMP 232<\/td>\r\n<\/tr>\r\n<tr class=\"shaded\" style=\"height: 50px\">\r\n<td style=\"width: 74.2909%;height: 15px\">Mathematical Reasoning: Writing and Proof<\/td>\r\n<td style=\"width: 42.0727%;height: 15px\">COMP 232<\/td>\r\n<\/tr>\r\n<tr style=\"height: 50px\">\r\n<td style=\"width: 74.2909%;height: 15px\">Introduction to Probability<\/td>\r\n<td style=\"width: 42.0727%;height: 15px\">COMP 233<\/td>\r\n<\/tr>\r\n<tr class=\"shaded\" style=\"height: 50px\">\r\n<td style=\"width: 74.2909%;height: 15px\">Introduction to Probability, Statistics and Random Processes<\/td>\r\n<td style=\"width: 42.0727%;height: 15px\">COMP 233<\/td>\r\n<\/tr>\r\n<tr style=\"height: 50px\">\r\n<td style=\"width: 74.2909%;height: 15px\">Delftse Foundations of Computation<\/td>\r\n<td style=\"width: 42.0727%;height: 15px\">COMP 335<\/td>\r\n<\/tr>\r\n<tr class=\"shaded\" style=\"height: 50px\">\r\n<td style=\"width: 74.2909%;height: 15px\">Foundations of Computation<\/td>\r\n<td style=\"width: 42.0727%;height: 15px\">COMP 335<\/td>\r\n<\/tr>\r\n<tr style=\"height: 50px\">\r\n<td style=\"width: 74.2909%;height: 15px\">Programming Fundamentals - A Modular Structured Approach using C++<\/td>\r\n<td style=\"width: 42.0727%;height: 15px\">COMP 345<\/td>\r\n<\/tr>\r\n<tr class=\"shaded\" style=\"height: 50px\">\r\n<td style=\"width: 74.2909%;height: 15px\">Programming Fundamentals \u2013 A Modular Structured Approach, 2nd Edition<\/td>\r\n<td style=\"width: 42.0727%;height: 15px\">COMP 348<\/td>\r\n<\/tr>\r\n<tr style=\"height: 50px\">\r\n<td style=\"width: 74.2909%\">Programming Languages: Application and Interpretation<\/td>\r\n<td style=\"width: 42.0727%\">COMP 348<\/td>\r\n<\/tr>\r\n<tr class=\"shaded\" style=\"height: 50px\">\r\n<td style=\"width: 74.2909%\">Database Design<\/td>\r\n<td style=\"width: 42.0727%\">COMP 353<\/td>\r\n<\/tr>\r\n<tr style=\"height: 50px\">\r\n<td style=\"width: 74.2909%\">Eloquent JavaScript: A Modern Introduction to Programming<\/td>\r\n<td style=\"width: 42.0727%\">SOEN 287<\/td>\r\n<\/tr>\r\n<tr class=\"shaded\" style=\"height: 50px\">\r\n<td style=\"width: 74.2909%\">The Missing Link: An Introduction to Web Development and Programming<\/td>\r\n<td style=\"width: 42.0727%\">SOEN 287<\/td>\r\n<\/tr>\r\n<tr style=\"height: 50px\">\r\n<td style=\"width: 74.2909%\">A Brief Introduction to Engineering Computation with MATLAB<\/td>\r\n<td style=\"width: 42.0727%\"><\/td>\r\n<\/tr>\r\n<tr class=\"shaded\" style=\"height: 50px\">\r\n<td style=\"width: 74.2909%\">Computer Science 20 - Saskatoon<\/td>\r\n<td style=\"width: 42.0727%\"><\/td>\r\n<\/tr>\r\n<tr style=\"height: 50px\">\r\n<td style=\"width: 74.2909%\">Java, Java, Java: Object-Oriented Problem Solving<\/td>\r\n<td style=\"width: 42.0727%\"><\/td>\r\n<\/tr>\r\n<tr class=\"shaded\" style=\"height: 50px\">\r\n<td style=\"width: 74.2909%\">Think Stats: Probability and Statistics for Programmers<\/td>\r\n<td style=\"width: 42.0727%\"><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<h2 style=\"text-align: left\"><img class=\"alignnone wp-image-1201\" src=\"http:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2-280x300.png\" alt=\"\" width=\"55\" height=\"59\" \/>\u00a0 \u00a0Description and Access<\/h2>\r\n<h3 class=\"entry-title\"><a href=\"https:\/\/aimath.org\/textbooks\/approved-textbooks\/levin\/\" target=\"_blank\" rel=\"noopener\">Discrete Mathematics: An Open Introduction<\/a><\/h3>\r\nApproved by the American Institute of Mathematics, this textbook grew out of a discrete mathematics course at the University of Northern Colorado.\r\n\r\nIncludes: questions, answers, instructor resources upon request\r\n\r\n<em>May suit: COEN 231 Introduction to Discrete Mathematics<\/em>\r\n<h3><a href=\"http:\/\/www.people.vcu.edu\/~rhammack\/BookOfProof\/\" target=\"_blank\" rel=\"noopener\">Book of Proof<\/a><\/h3>\r\nApproved by the American Institute of Mathematics and adopted widely by other universities, this textbook is an introduction to the standard methods of proving mathematical theorems.\r\n\r\n<strong>Includes<\/strong>: instructor resources, workbook\r\n\r\n<strong>May suit<\/strong><em>: COMP 232 Mathematics for Computer Science<\/em>\r\n<h3><a href=\"https:\/\/scholarworks.gvsu.edu\/books\/9\/\" target=\"_blank\" rel=\"noopener\">Mathematical Reasoning: Writing and Proof<\/a><\/h3>\r\nThis textbook is designed for the \ufb01rst course in a mathematics curriculum that introduces students to the processes of constructing and writing proofs. It focuses on the formal development of mathematics.\r\n\r\n<strong>Includes<\/strong>: questions, answers, instructor resources upon request\r\n\r\n<strong>May suit<\/strong><em>: COMP 232 Mathematics for Computer Science<\/em>\r\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/introduction-to-probability\" target=\"_blank\" rel=\"noopener\">Introduction to Probability<\/a><\/h3>\r\nThe textbook is intended for use in a standard one-term course, in which both discrete and continuous probability is covered.\r\n\r\n<strong>Includes<\/strong>: exercises and solutions\r\n\r\n<strong>May suit<\/strong><em>: COMP 233 Probability and Statistics for Computer Science<\/em>\r\n<h3><a href=\"https:\/\/scholarworks.umass.edu\/ece_ed_materials\/1\/\" target=\"_blank\" rel=\"noopener\">Introduction to Probability, Statistics and Random Processes<\/a><\/h3>\r\nThis textbook is intended for undergraduate and first-year graduate-level courses in probability, statistics, and random processes.\r\n\r\n<strong>Includes<\/strong>: exercises, solutions, code\r\n\r\n<strong>May suit<\/strong><em>: COMP 233 Probability and Statistics for Computer Science<\/em>\r\n<h3><a href=\"https:\/\/textbooks.open.tudelft.nl\/index.php\/textbooks\/catalog\/book\/13\" target=\"_blank\" rel=\"noopener\">Delftse Foundations of Computation<\/a><\/h3>\r\nThe textbook is designed for an introductory course in theoretical computer science. It includes topics from propositional and predicate logic, proof techniques, set theory and the theory of computation, along with practical applications to computer science.\r\n\r\n<strong>May suit<\/strong><em>: COMP 335 Introduction to Theoretical Computer Science<\/em>\r\n<h3><a href=\"http:\/\/math.hws.edu\/FoundationsOfComputation\/\" target=\"_blank\" rel=\"noopener\">Foundations of Computation<\/a><\/h3>\r\nThe textbook is designed for a one-semester course in theoretical computer science.\r\n\r\n<strong>May suit<\/strong><em>: COMP 335 Introduction to Theoretical Computer Science<\/em>\r\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/programming-fundamentals-a-modular-structured-approach-using-c\" target=\"_blank\" rel=\"noopener noreferrer\">Programming Fundamentals - A Modular Structured Approach using C++<\/a><\/h3>\r\nThis reviewed open textbook covers content normally found in an introductory C++ programming course, including decisions, loops, functions, arrays and file I\/O.\r\n\r\n<strong>Includes<\/strong>: instructor and student resources\r\n\r\n<strong>May suit<\/strong><em>: COMP 345 Advanced Program Design with C++<\/em>\r\n<h3><a href=\"https:\/\/press.rebus.community\/programmingfundamentals\/\" target=\"_blank\" rel=\"noopener\">Programming Fundamentals \u2013 A Modular Structured Approach, 2nd Edition<\/a><\/h3>\r\nThis is the second edition to <span style=\"color: #0072a8\"><a style=\"color: #0072a8\" href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/programming-fundamentals-a-modular-structured-approach-using-c\" target=\"_blank\" rel=\"noopener noreferrer\">Programming Fundamentals - A Modular Structured Approach using C++<\/a><\/span>. The goal is to make it programming-language neutral, so that it may serve as an introductory programming textbook for students using any of a variety of programming languages, including C++, C#, Java, JavaScript, Python, and Swift.\r\n\r\n<strong>Includes<\/strong>: pseudocode, flowcharts, and example code in C++, C#, Java, JavaScript, Python, and Swift\r\n\r\n<strong>May suit<\/strong><em>: COMP 348 Principles of Programming Languages<\/em>\r\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/35\" target=\"_blank\" rel=\"noopener\">Programming Languages: Application and Interpretation<\/a><\/h3>\r\nWritten by a computer science professor at Brown University, this textbook takes a non-linear approach to the subject matter.\r\n\r\n<strong>Includes<\/strong>: exercises and activities\r\n\r\n<strong>May suit<\/strong><em>: COMP 348 Principles of Programming Languages<\/em>\r\n<h3 data-param=\"dc.title\"><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/354\" target=\"_blank\" rel=\"noopener\">Database Design<\/a><\/h3>\r\nAn introductory textbook that covers database systems and database design concepts.\r\n\r\n<strong>Includes:<\/strong> end-of-chapter exercises, sample ERD exercises, SQL lab with solution\r\n\r\n<strong>May suit<\/strong><em>: COMP 353 Databases<\/em>\r\n<h3><a href=\"https:\/\/eloquentjavascript.net\/\" target=\"_blank\" rel=\"noopener\">Eloquent JavaScript: A Modern Introduction to Programming<\/a><\/h3>\r\nThis book covers the principles of programming and introduces JavaScript. It is written by <span class=\"st\">a programming language enthusiast.\u00a0<\/span>\r\n\r\n<strong>Includes<\/strong>: exercises and solutions\r\n\r\n<strong>May suit<\/strong><em>: SOEN 287 Web Programming<\/em>\r\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/203\" target=\"_blank\" rel=\"noopener\">The Missing Link: An Introduction to Web Development and Programming<\/a><\/h3>\r\nThis textbook provides the developer with an understanding of the various elements of web development by focusing on the concepts and fundamentals through the examples within, providing a foundation that allows easier transition to other languages and a better understanding of how to approach their work.\r\n\r\n<strong>Includes<\/strong>: questions, discussions, solutions\r\n\r\n<strong>May suit<\/strong><em>: SOEN 287 Web Programming<\/em>\r\n<h3><a href=\"https:\/\/openlibrary.ecampusontario.ca\/catalogue\/item\/?id=4ef19e0d-16c9-4c45-9680-14a4350359ce\" target=\"_blank\" rel=\"noopener\">A Brief Introduction to Engineering Computation with MATLAB<\/a><\/h3>\r\nSpecifically designed for students with no programming experience, the <span class=\"morecontent\">strategic goal of the course and book is to provide learners with an appreciation for the role computation plays in solving engineering problems.<\/span>\r\n\r\n<strong>Includes<\/strong>: study guide, problem sets\r\n<h3><a href=\"http:\/\/opensask.ca\/index.html\" target=\"_blank\" rel=\"noopener\">Computer Science 20 - Saskatoon<\/a><\/h3>\r\nThrough its text and videos, this resource provides an interactive experience on learning to write and execute Python code. In addition to simply executing code, there is a unique feature called <em>codelens<\/em> that allows control of the flow of execution in order to gain a better understanding of how the program works.\r\n\r\n<strong>Includes<\/strong>: videos, quizzes, exercises\r\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/java-java-java-object-oriented-problem-solving\" target=\"_blank\" rel=\"noopener\">Java, Java, Java: Object-Oriented Problem Solving<\/a><\/h3>\r\nSuitable for a typical Introduction to Computer Science course or for a slightly more advanced Java as a Second Language course. This textbook takes the \u201cobjects first\u201d approach to programming and problem solving. It provides careful coverage of Java language features, introductory programming concepts, and object-oriented design principles.\r\n\r\n<strong>Includes<\/strong>: self-study exercises with answers, end-of-chapter exercises, and a companion website with instructor resources upon request\r\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/think-stats-probability-and-statistics-for-programmers\" target=\"_blank\" rel=\"noopener\">Think Stats: Probability and Statistics for Programmers<\/a><\/h3>\r\nThe book is an introduction to the practical tools of exploratory data analysis, especially for Python programmers.\r\n\r\n<strong>Includes<\/strong>: exercises, experiments, code\r\n\r\n&nbsp;\r\n\r\n<hr \/>\r\n\r\n<div>\r\n<div class=\"textbox textbox--learning-objectives\"><header class=\"textbox__header\">\r\n<h3 class=\"textbox__title\"><span style=\"color: #ffffff\"><a id=\"footer_computingsciencensoftwareengineering\"><\/a>Support for Open Textbooks at Concordia<\/span><\/h3>\r\n<\/header>\r\n<div class=\"textbox__content\">\r\n<ul>\r\n \t<li>There are <span style=\"color: #333399\"><a style=\"color: #333399\" href=\"https:\/\/www.concordia.ca\/library\/oer\/adopt-create\/oer-grants.html\" target=\"_blank\" rel=\"noopener\">grants<\/a> <\/span>available to adopt an open textbook for your course.<\/li>\r\n \t<li><a href=\"https:\/\/libguides.lib.fit.edu\/OEREng\/home.\" target=\"_blank\" rel=\"noopener\">Open Textbooks for Engineering<\/a> offers a range of open textbooks that may be of use for Concordia courses.<\/li>\r\n \t<li>Make suggestions for this page by emailing <a href=\"mailto:oer@concordia.ca\"><strong>oer@concordia.ca<\/strong><\/a>.<\/li>\r\n \t<li>Learn more about <span style=\"color: #333399\"><a style=\"color: #333399\" href=\"https:\/\/www.concordia.ca\/library\/oer.html\" target=\"_blank\" rel=\"noopener\">OER<\/a><\/span><\/li>\r\n<\/ul>\r\n<\/div>\r\n<\/div>\r\n<\/div>","rendered":"<p><a href=\"#footer_computingsciencensoftwareengineering\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-906\" src=\"http:\/\/opentextbooks.concordia.ca\/disciplineguidetest\/wp-content\/uploads\/sites\/48\/2018\/10\/ver1-1024x274.png\" alt=\"Button for Call for Collaboration\" width=\"522\" height=\"140\" srcset=\"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2018\/10\/ver1-1024x274.png 1024w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2018\/10\/ver1-300x80.png 300w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2018\/10\/ver1-768x206.png 768w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2018\/10\/ver1-1536x411.png 1536w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2018\/10\/ver1-2048x548.png 2048w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2018\/10\/ver1-65x17.png 65w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2018\/10\/ver1-225x60.png 225w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2018\/10\/ver1-350x94.png 350w\" sizes=\"auto, (max-width: 522px) 100vw, 522px\" \/><\/a><\/p>\n<h2 style=\"text-align: left\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1201\" src=\"http:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2-280x300.png\" alt=\"\" width=\"55\" height=\"59\" srcset=\"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2-280x300.png 280w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2-65x70.png 65w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2-225x241.png 225w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2.png 300w\" sizes=\"auto, (max-width: 55px) 100vw, 55px\" \/>\u00a0 \u00a0Open Textbooks and Concordia Courses<\/h2>\n<table style=\"border-collapse: collapse;width: 100%;height: 150px\">\n<thead>\n<tr style=\"height: 61px\">\n<td style=\"width: 74.2909%;height: 61px\"><strong>Open Textbook Title<\/strong><\/td>\n<td style=\"width: 42.0727%;height: 15px\"><strong>Potentially Relevant Courses<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"shaded\" style=\"height: 50px\">\n<td style=\"width: 74.2909%;height: 15px\">Discrete Mathematics: An Open Introduction<\/td>\n<td style=\"width: 42.0727%;height: 15px\">COEN 231<\/td>\n<\/tr>\n<tr style=\"height: 50px\">\n<td style=\"width: 74.2909%;height: 15px\">Book of Proof<\/td>\n<td style=\"width: 42.0727%;height: 15px\">COMP 232<\/td>\n<\/tr>\n<tr class=\"shaded\" style=\"height: 50px\">\n<td style=\"width: 74.2909%;height: 15px\">Mathematical Reasoning: Writing and Proof<\/td>\n<td style=\"width: 42.0727%;height: 15px\">COMP 232<\/td>\n<\/tr>\n<tr style=\"height: 50px\">\n<td style=\"width: 74.2909%;height: 15px\">Introduction to Probability<\/td>\n<td style=\"width: 42.0727%;height: 15px\">COMP 233<\/td>\n<\/tr>\n<tr class=\"shaded\" style=\"height: 50px\">\n<td style=\"width: 74.2909%;height: 15px\">Introduction to Probability, Statistics and Random Processes<\/td>\n<td style=\"width: 42.0727%;height: 15px\">COMP 233<\/td>\n<\/tr>\n<tr style=\"height: 50px\">\n<td style=\"width: 74.2909%;height: 15px\">Delftse Foundations of Computation<\/td>\n<td style=\"width: 42.0727%;height: 15px\">COMP 335<\/td>\n<\/tr>\n<tr class=\"shaded\" style=\"height: 50px\">\n<td style=\"width: 74.2909%;height: 15px\">Foundations of Computation<\/td>\n<td style=\"width: 42.0727%;height: 15px\">COMP 335<\/td>\n<\/tr>\n<tr style=\"height: 50px\">\n<td style=\"width: 74.2909%;height: 15px\">Programming Fundamentals &#8211; A Modular Structured Approach using C++<\/td>\n<td style=\"width: 42.0727%;height: 15px\">COMP 345<\/td>\n<\/tr>\n<tr class=\"shaded\" style=\"height: 50px\">\n<td style=\"width: 74.2909%;height: 15px\">Programming Fundamentals \u2013 A Modular Structured Approach, 2nd Edition<\/td>\n<td style=\"width: 42.0727%;height: 15px\">COMP 348<\/td>\n<\/tr>\n<tr style=\"height: 50px\">\n<td style=\"width: 74.2909%\">Programming Languages: Application and Interpretation<\/td>\n<td style=\"width: 42.0727%\">COMP 348<\/td>\n<\/tr>\n<tr class=\"shaded\" style=\"height: 50px\">\n<td style=\"width: 74.2909%\">Database Design<\/td>\n<td style=\"width: 42.0727%\">COMP 353<\/td>\n<\/tr>\n<tr style=\"height: 50px\">\n<td style=\"width: 74.2909%\">Eloquent JavaScript: A Modern Introduction to Programming<\/td>\n<td style=\"width: 42.0727%\">SOEN 287<\/td>\n<\/tr>\n<tr class=\"shaded\" style=\"height: 50px\">\n<td style=\"width: 74.2909%\">The Missing Link: An Introduction to Web Development and Programming<\/td>\n<td style=\"width: 42.0727%\">SOEN 287<\/td>\n<\/tr>\n<tr style=\"height: 50px\">\n<td style=\"width: 74.2909%\">A Brief Introduction to Engineering Computation with MATLAB<\/td>\n<td style=\"width: 42.0727%\"><\/td>\n<\/tr>\n<tr class=\"shaded\" style=\"height: 50px\">\n<td style=\"width: 74.2909%\">Computer Science 20 &#8211; Saskatoon<\/td>\n<td style=\"width: 42.0727%\"><\/td>\n<\/tr>\n<tr style=\"height: 50px\">\n<td style=\"width: 74.2909%\">Java, Java, Java: Object-Oriented Problem Solving<\/td>\n<td style=\"width: 42.0727%\"><\/td>\n<\/tr>\n<tr class=\"shaded\" style=\"height: 50px\">\n<td style=\"width: 74.2909%\">Think Stats: Probability and Statistics for Programmers<\/td>\n<td style=\"width: 42.0727%\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 style=\"text-align: left\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1201\" src=\"http:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2-280x300.png\" alt=\"\" width=\"55\" height=\"59\" srcset=\"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2-280x300.png 280w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2-65x70.png 65w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2-225x241.png 225w, https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-content\/uploads\/sites\/48\/2024\/05\/ver2.png 300w\" sizes=\"auto, (max-width: 55px) 100vw, 55px\" \/>\u00a0 \u00a0Description and Access<\/h2>\n<h3 class=\"entry-title\"><a href=\"https:\/\/aimath.org\/textbooks\/approved-textbooks\/levin\/\" target=\"_blank\" rel=\"noopener\">Discrete Mathematics: An Open Introduction<\/a><\/h3>\n<p>Approved by the American Institute of Mathematics, this textbook grew out of a discrete mathematics course at the University of Northern Colorado.<\/p>\n<p>Includes: questions, answers, instructor resources upon request<\/p>\n<p><em>May suit: COEN 231 Introduction to Discrete Mathematics<\/em><\/p>\n<h3><a href=\"http:\/\/www.people.vcu.edu\/~rhammack\/BookOfProof\/\" target=\"_blank\" rel=\"noopener\">Book of Proof<\/a><\/h3>\n<p>Approved by the American Institute of Mathematics and adopted widely by other universities, this textbook is an introduction to the standard methods of proving mathematical theorems.<\/p>\n<p><strong>Includes<\/strong>: instructor resources, workbook<\/p>\n<p><strong>May suit<\/strong><em>: COMP 232 Mathematics for Computer Science<\/em><\/p>\n<h3><a href=\"https:\/\/scholarworks.gvsu.edu\/books\/9\/\" target=\"_blank\" rel=\"noopener\">Mathematical Reasoning: Writing and Proof<\/a><\/h3>\n<p>This textbook is designed for the \ufb01rst course in a mathematics curriculum that introduces students to the processes of constructing and writing proofs. It focuses on the formal development of mathematics.<\/p>\n<p><strong>Includes<\/strong>: questions, answers, instructor resources upon request<\/p>\n<p><strong>May suit<\/strong><em>: COMP 232 Mathematics for Computer Science<\/em><\/p>\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/introduction-to-probability\" target=\"_blank\" rel=\"noopener\">Introduction to Probability<\/a><\/h3>\n<p>The textbook is intended for use in a standard one-term course, in which both discrete and continuous probability is covered.<\/p>\n<p><strong>Includes<\/strong>: exercises and solutions<\/p>\n<p><strong>May suit<\/strong><em>: COMP 233 Probability and Statistics for Computer Science<\/em><\/p>\n<h3><a href=\"https:\/\/scholarworks.umass.edu\/ece_ed_materials\/1\/\" target=\"_blank\" rel=\"noopener\">Introduction to Probability, Statistics and Random Processes<\/a><\/h3>\n<p>This textbook is intended for undergraduate and first-year graduate-level courses in probability, statistics, and random processes.<\/p>\n<p><strong>Includes<\/strong>: exercises, solutions, code<\/p>\n<p><strong>May suit<\/strong><em>: COMP 233 Probability and Statistics for Computer Science<\/em><\/p>\n<h3><a href=\"https:\/\/textbooks.open.tudelft.nl\/index.php\/textbooks\/catalog\/book\/13\" target=\"_blank\" rel=\"noopener\">Delftse Foundations of Computation<\/a><\/h3>\n<p>The textbook is designed for an introductory course in theoretical computer science. It includes topics from propositional and predicate logic, proof techniques, set theory and the theory of computation, along with practical applications to computer science.<\/p>\n<p><strong>May suit<\/strong><em>: COMP 335 Introduction to Theoretical Computer Science<\/em><\/p>\n<h3><a href=\"http:\/\/math.hws.edu\/FoundationsOfComputation\/\" target=\"_blank\" rel=\"noopener\">Foundations of Computation<\/a><\/h3>\n<p>The textbook is designed for a one-semester course in theoretical computer science.<\/p>\n<p><strong>May suit<\/strong><em>: COMP 335 Introduction to Theoretical Computer Science<\/em><\/p>\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/programming-fundamentals-a-modular-structured-approach-using-c\" target=\"_blank\" rel=\"noopener noreferrer\">Programming Fundamentals &#8211; A Modular Structured Approach using C++<\/a><\/h3>\n<p>This reviewed open textbook covers content normally found in an introductory C++ programming course, including decisions, loops, functions, arrays and file I\/O.<\/p>\n<p><strong>Includes<\/strong>: instructor and student resources<\/p>\n<p><strong>May suit<\/strong><em>: COMP 345 Advanced Program Design with C++<\/em><\/p>\n<h3><a href=\"https:\/\/press.rebus.community\/programmingfundamentals\/\" target=\"_blank\" rel=\"noopener\">Programming Fundamentals \u2013 A Modular Structured Approach, 2nd Edition<\/a><\/h3>\n<p>This is the second edition to <span style=\"color: #0072a8\"><a style=\"color: #0072a8\" href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/programming-fundamentals-a-modular-structured-approach-using-c\" target=\"_blank\" rel=\"noopener noreferrer\">Programming Fundamentals &#8211; A Modular Structured Approach using C++<\/a><\/span>. The goal is to make it programming-language neutral, so that it may serve as an introductory programming textbook for students using any of a variety of programming languages, including C++, C#, Java, JavaScript, Python, and Swift.<\/p>\n<p><strong>Includes<\/strong>: pseudocode, flowcharts, and example code in C++, C#, Java, JavaScript, Python, and Swift<\/p>\n<p><strong>May suit<\/strong><em>: COMP 348 Principles of Programming Languages<\/em><\/p>\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/35\" target=\"_blank\" rel=\"noopener\">Programming Languages: Application and Interpretation<\/a><\/h3>\n<p>Written by a computer science professor at Brown University, this textbook takes a non-linear approach to the subject matter.<\/p>\n<p><strong>Includes<\/strong>: exercises and activities<\/p>\n<p><strong>May suit<\/strong><em>: COMP 348 Principles of Programming Languages<\/em><\/p>\n<h3 data-param=\"dc.title\"><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/354\" target=\"_blank\" rel=\"noopener\">Database Design<\/a><\/h3>\n<p>An introductory textbook that covers database systems and database design concepts.<\/p>\n<p><strong>Includes:<\/strong> end-of-chapter exercises, sample ERD exercises, SQL lab with solution<\/p>\n<p><strong>May suit<\/strong><em>: COMP 353 Databases<\/em><\/p>\n<h3><a href=\"https:\/\/eloquentjavascript.net\/\" target=\"_blank\" rel=\"noopener\">Eloquent JavaScript: A Modern Introduction to Programming<\/a><\/h3>\n<p>This book covers the principles of programming and introduces JavaScript. It is written by <span class=\"st\">a programming language enthusiast.\u00a0<\/span><\/p>\n<p><strong>Includes<\/strong>: exercises and solutions<\/p>\n<p><strong>May suit<\/strong><em>: SOEN 287 Web Programming<\/em><\/p>\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/203\" target=\"_blank\" rel=\"noopener\">The Missing Link: An Introduction to Web Development and Programming<\/a><\/h3>\n<p>This textbook provides the developer with an understanding of the various elements of web development by focusing on the concepts and fundamentals through the examples within, providing a foundation that allows easier transition to other languages and a better understanding of how to approach their work.<\/p>\n<p><strong>Includes<\/strong>: questions, discussions, solutions<\/p>\n<p><strong>May suit<\/strong><em>: SOEN 287 Web Programming<\/em><\/p>\n<h3><a href=\"https:\/\/openlibrary.ecampusontario.ca\/catalogue\/item\/?id=4ef19e0d-16c9-4c45-9680-14a4350359ce\" target=\"_blank\" rel=\"noopener\">A Brief Introduction to Engineering Computation with MATLAB<\/a><\/h3>\n<p>Specifically designed for students with no programming experience, the <span class=\"morecontent\">strategic goal of the course and book is to provide learners with an appreciation for the role computation plays in solving engineering problems.<\/span><\/p>\n<p><strong>Includes<\/strong>: study guide, problem sets<\/p>\n<h3><a href=\"http:\/\/opensask.ca\/index.html\" target=\"_blank\" rel=\"noopener\">Computer Science 20 &#8211; Saskatoon<\/a><\/h3>\n<p>Through its text and videos, this resource provides an interactive experience on learning to write and execute Python code. In addition to simply executing code, there is a unique feature called <em>codelens<\/em> that allows control of the flow of execution in order to gain a better understanding of how the program works.<\/p>\n<p><strong>Includes<\/strong>: videos, quizzes, exercises<\/p>\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/java-java-java-object-oriented-problem-solving\" target=\"_blank\" rel=\"noopener\">Java, Java, Java: Object-Oriented Problem Solving<\/a><\/h3>\n<p>Suitable for a typical Introduction to Computer Science course or for a slightly more advanced Java as a Second Language course. This textbook takes the \u201cobjects first\u201d approach to programming and problem solving. It provides careful coverage of Java language features, introductory programming concepts, and object-oriented design principles.<\/p>\n<p><strong>Includes<\/strong>: self-study exercises with answers, end-of-chapter exercises, and a companion website with instructor resources upon request<\/p>\n<h3><a href=\"https:\/\/open.umn.edu\/opentextbooks\/textbooks\/think-stats-probability-and-statistics-for-programmers\" target=\"_blank\" rel=\"noopener\">Think Stats: Probability and Statistics for Programmers<\/a><\/h3>\n<p>The book is an introduction to the practical tools of exploratory data analysis, especially for Python programmers.<\/p>\n<p><strong>Includes<\/strong>: exercises, experiments, code<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<div>\n<div class=\"textbox textbox--learning-objectives\">\n<header class=\"textbox__header\">\n<h3 class=\"textbox__title\"><span style=\"color: #ffffff\"><a id=\"footer_computingsciencensoftwareengineering\"><\/a>Support for Open Textbooks at Concordia<\/span><\/h3>\n<\/header>\n<div class=\"textbox__content\">\n<ul>\n<li>There are <span style=\"color: #333399\"><a style=\"color: #333399\" href=\"https:\/\/www.concordia.ca\/library\/oer\/adopt-create\/oer-grants.html\" target=\"_blank\" rel=\"noopener\">grants<\/a> <\/span>available to adopt an open textbook for your course.<\/li>\n<li><a href=\"https:\/\/libguides.lib.fit.edu\/OEREng\/home.\" target=\"_blank\" rel=\"noopener\">Open Textbooks for Engineering<\/a> offers a range of open textbooks that may be of use for Concordia courses.<\/li>\n<li>Make suggestions for this page by emailing <a href=\"mailto:oer@concordia.ca\"><strong>oer@concordia.ca<\/strong><\/a>.<\/li>\n<li>Learn more about <span style=\"color: #333399\"><a style=\"color: #333399\" href=\"https:\/\/www.concordia.ca\/library\/oer.html\" target=\"_blank\" rel=\"noopener\">OER<\/a><\/span><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"menu_order":4,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":"cc-by"},"chapter-type":[],"contributor":[],"license":[52],"class_list":["post-114","chapter","type-chapter","status-publish","hentry","license-cc-by"],"part":106,"_links":{"self":[{"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/pressbooks\/v2\/chapters\/114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":17,"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/pressbooks\/v2\/chapters\/114\/revisions"}],"predecessor-version":[{"id":1247,"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/pressbooks\/v2\/chapters\/114\/revisions\/1247"}],"part":[{"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/pressbooks\/v2\/parts\/106"}],"metadata":[{"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/pressbooks\/v2\/chapters\/114\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/wp\/v2\/media?parent=114"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/pressbooks\/v2\/chapter-type?post=114"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/wp\/v2\/contributor?post=114"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/opentextbooks.concordia.ca\/oerbydiscipline2\/wp-json\/wp\/v2\/license?post=114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}