{"id":98,"date":"2013-10-03T12:13:22","date_gmt":"2013-10-03T17:13:22","guid":{"rendered":"https:\/\/wp.stolaf.edu\/cs\/?page_id=98"},"modified":"2013-10-03T12:24:26","modified_gmt":"2013-10-03T17:24:26","slug":"spotlight-on-sd-cs-251-the-course-that-opens-doors","status":"publish","type":"page","link":"https:\/\/wp.stolaf.edu\/cs\/spotlight-on-sd-cs-251-the-course-that-opens-doors\/","title":{"rendered":"Spotlight on SD (CS 251): The course that opens doors"},"content":{"rendered":"<div data-modular-content-collection><p>&nbsp;<\/p>\n<table summary=\"Synopsis of this page\" width=\"92%\" border=\"2\" bgcolor=\"#FFFFFF\">\n<tbody>\n<tr align=\"left\">\n<td>\n<h5>Summary<\/h5>\n<p><a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#SD\">CS 251, Software Design and Implementation (SD)<\/a>\u00a0opens many future options, because of the\u00a0<a href=\"#C++\">conceptual and technical background<\/a>\u00a0it provides and the\u00a0<a href=\"#future\">valuable communcation and teamwork skills<\/a>\u00a0it develops. SD introduces the popular and powerful\u00a0<a href=\"#C++\">C++ programming language<\/a>, and uses it to create\u00a0<a href=\"#waterfall\">software as it is built in the &#8220;real world&#8221;<\/a>. The\u00a0<a href=\"#prog\">strong programming skills<\/a>\u00a0developed in SD apply to\u00a0<a href=\"#otherdisc\">other disciplines<\/a>\u00a0and to\u00a0<a href=\"#C++\">internships and careers<\/a>\u00a0as well as to\u00a0<a href=\"#CS\">further work in CS<\/a>, and learning C++\u00a0<a href=\"#otherlangs\">helps with learning other programming languages<\/a>, many of which have similar syntax and<a href=\"#memmgt\">concepts<\/a>. Plus, SD&#8217;s\u00a0<a href=\"#teamproj\">team project experience<\/a>\u00a0is fun and develops essential &#8220;people skills.&#8221; It&#8217;s no wonder that SD is the\u00a0<a href=\"#CS\">main prerequisite<\/a>\u00a0for most core-level CS courses.<\/p>\n<p>The required\u00a0<a href=\"#lab\">quarter-credit lab (CS 252)<\/a>\u00a0is the key extra ingredient for SD (CS 251), because the\u00a0<a href=\"#lab\/hw\">lab and daily assignments together<\/a>\u00a0provide for<a href=\"#time\">enough time to master the valuable software technology<\/a>\u00a0in SD. With\u00a0<a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#CS1\">CS 125 (CS1)<\/a>\u00a0as its only prerequisite, SD is suitable for\u00a0<a href=\"#cs-stu\">CS students<\/a>,\u00a0<a href=\"#non-cs-stu\">non-CS students who want effective programming skills<\/a>, those wanting to know\u00a0<a href=\"#software\">how real-world software is created<\/a>, and people interested in\u00a0<a href=\"#careers\">computing-related careers<\/a>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h4>Eight reasons to take SD<\/h4>\n<p><a name=\"future\"><\/a><\/p>\n<p>If you only take two CS courses in your life,\u00a0<a title=\"Listing of CS courses\" href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#SD\"><em>Software Design and Implementation<\/em>\u00a0(SD, CS 251)<\/a>\u00a0is the most strategic choice for a second course. SD &#8220;opens doors,&#8221; giving you many options for future choices, because it reinforces and applies the concepts of CS, develops specific technical and thinking skills that give you great advantages in both academia and the real world, and expands on your communication and teamwork abilities, the &#8220;people skills&#8221; so essential for anything you do.<\/p>\n<ul>\n<li><a name=\"C++\"><\/a><em>SD introduces programming in C++,<\/em>\u00a0a widely used and powerful programming language. C++ is so popular because it has complete support for object-oriented programming, yet offers great access to low-level operations like pointers; because the C++ language processor system can be used to produce high-performance programs; and because C++ shares the same basic syntax as C and Java, two other popular languages.<\/li>\n<li><a name=\"waterfall\"><\/a><em>SD emphasizes standard software-design practices,<\/em>\u00a0such as a\u00a0<em>software lifecycle<\/em>\u00a0using the\u00a0<em>waterfall model<\/em>\u00a0for software development. These methods, which emphasize thorough planning and systematic construction of programs, not only represent several\u00a0<a title=\"List of principles of Computer Science\" href=\"https:\/\/wp.stolaf.edu\/cs\/list-of-principles-of-computer-science\/\">principles of CS<\/a>, but are also used throughout the &#8220;real world&#8221; for creating software.<\/li>\n<li><a name=\"CS\"><\/a><em>SD is the main prerequisite for nearly all core courses in CS,<\/em>\u00a0making SD the single most valuable course for opening doors to further study. It&#8217;s so often a prerequisite because the skills, concepts, and computational maturity developed in SD constitute such a significant rise in ability to handle CS work at this level, and because those courses specifically require the topics of memory management (<a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#ADS\">ADS<\/a>,<a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#OS\">OS<\/a>) and software design (<a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#ESD\">ESD<\/a>,<a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#CSA\">CSA<\/a>,<a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#PL\">PL<\/a>,<a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#ADS\">ADS<\/a>,<a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#OS\">OS<\/a>) that rarely appear in C++-based courses other than SD.<\/li>\n<li><a name=\"prog\"><\/a><em>SD develops valuable and substantial programming skills.<\/em>\u00a0<a title=\"CS and other computing fields\" href=\"https:\/\/wp.stolaf.edu\/cs\/cs-and-other-computing-fields\/\">CS isn&#8217;t programming<\/a>, but CS students use programming to explore the concepts of CS, and SD provides solid fundamental strength in such programming.<\/li>\n<li><a name=\"otherdisc\"><\/a><em>SD develops valuable and substantial programming skills, Part II (other disciplines).<\/em>\u00a0As for CS, students of other disciplines can use programming to explore the concepts of their fields, and SD provides an excellent background for such applications.\u00a0<a title=\"Spotlight: Bioinformatics\" href=\"https:\/\/wp.stolaf.edu\/cs\/spotlight-bioinformatics\/\">Bioinformatics<\/a>, a dynamic and enormously fruitful combination of CS and Biology, serves as a high-profile model. But CS offers potential for productive collaboration with\u00a0<em>any<\/em>\u00a0other field or interest, and SD provides excellent basic background for interdisciplinary work involving computing.<\/li>\n<li><a name=\"otherlangs\"><\/a><em>SD helps with learning new programming langauges.<\/em>\u00a0One learns a lot about picking up new programming languages from any second programming language, but the languages Scheme and C++ illustrate many contrasts that show a wide range of differences. SD shows how these seemingly unlike languages exhibit the same underlying principles&#8212;which also apply to any other programming language. Plus, mastering the feature-rich and technical C++ itself makes it easier to learn other languages you may encounter in the future.<\/li>\n<li><a name=\"memmgt\"><\/a><em>SD teaches memory management concepts and practices<\/em>\u00a0through hands-on experience. Memory management issues have great impact in computing, but it&#8217;s difficult to develop a &#8220;feel&#8221; for them with languages such as Java and Scheme, which hides memory management from the programmer. SD&#8217;s thorough treatment of memory management informs a student by raising awareness of these subtle yet critical concerns.<\/li>\n<li><a name=\"teamproj\"><\/a><em>SD includes a team project experience,<\/em>\u00a0which is both invaluable and fun. The team project teaches software design principles, strengthens interpersonal abilities, provides a glimpse to real-world uses of computing and CS, raises awareness of the impact that software has on people and groups (through a introductory ethical analysis of that project), and adds interest and value to the study of software.<\/li>\n<\/ul>\n<h4>How to take SD<\/h4>\n<p><a name=\"lab\"><\/a><\/p>\n<p><a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#SD\">SD (CS 251, Software Design and Implementation)<\/a>\u00a0is offered every Spring. The course involves three lecture-discussion meetings plus a separate two-hour lab meeting each week. Beginning in Spring 2005, the lab meeting has its own course number\u00a0<a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#SDL\">CS 252<\/a>\u00a0and .25 credit; sign up for CS 251 and one of the sections of CS 252. For most of the semester, students master the course&#8217;s material through required daily homework and weekly laboratory assignments. The team-project phase of the course near the end of the term involves project deadlines instead of homework, and the scheduled lab times become team meeting sessions.<\/p>\n<p><a name=\"time\"><\/a><\/p>\n<p>SD presents fewer conceptual challenges than its prerequisite\u00a0<a href=\"https:\/\/wp.stolaf.edu\/cs\/listing-of-cs-courses\/#CS1\">CS1<\/a>. The challenge of SD resides in its demand for time: there is simply no way to obtain the programming skills and other benefits of SD without spending a lot of time on task. This investment pays off handsomely, but it&#8217;s critical that students allow for the time requirements for SD and its lab when planning course load. That&#8217;s why additional course credit is given for the SD lab (CS 252).<\/p>\n<p><a name=\"lab\/hw\"><\/a><\/p>\n<p>The lab meetings make SD accessible to all. Major new concepts and skills appear first in lab with &#8220;hands-on&#8221; learning exercises, so students start each new topic in a context of concrete experience reinforcing general principles. Plus, your instructor is on hand to answer your questions as you encounter conceptual or technical questions during the lab period. Ongoing daily homework assignments enable SD students to master the material through practice.<\/p>\n<h4>Examples of SD students<\/h4>\n<ul>\n<li><a name=\"cs-stu\"><\/a><em>Students interested in CS<\/em>\u00a0take SD to explore their interest in the field and to prepare for other courses and future work in CS. As the\u00a0<a href=\"https:\/\/www.stolaf.edu\/depts\/cs\/academics\/courses\/list.html_OVIEW\">CS curriculum diagram<\/a>shows, SD occupies a central and prerequisite role in St. Olaf&#8217;s CS curriculum.<\/li>\n<li><a name=\"software\"><\/a><em>Students wanting to know about the construction of software<\/em>\u00a0take SD to gain insight into software they use and to develop programming skills that enable them to create their own software.<\/li>\n<li><a name=\"non-cs-stu\"><\/a><em>Students interested in undergraduate research<\/em>\u00a0take SD to develop software-development skills for investigations into disciplinary and interdisciplinary areas. The programming capabilities obtained in SD make it possible to build one&#8217;s own custom applications to support research activities.<\/li>\n<li><a name=\"careers\"><\/a><em>Students readying themselves for the world beyond St. Olaf in any field<\/em>\u00a0take SD as part of a balanced personal career preparation. You don&#8217;t need to become a computing professional in order to derive future benefit from SD: In a world increasingly dominated by information and technology, the understanding and skills provided by SD empower you to participate in these new directions and make a difference in the world.<\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>&nbsp; Summary CS 251, Software Design and Implementation (SD)\u00a0opens many future options, because of the\u00a0conceptual and technical background\u00a0it provides and the\u00a0valuable communcation and teamwork skills\u00a0it develops. SD introduces the popular [&hellip;]<\/p>\n","protected":false},"author":209,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-98","page","type-page","status-publish","hentry"],"acf":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wp.stolaf.edu\/cs\/wp-json\/wp\/v2\/pages\/98","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.stolaf.edu\/cs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wp.stolaf.edu\/cs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wp.stolaf.edu\/cs\/wp-json\/wp\/v2\/users\/209"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.stolaf.edu\/cs\/wp-json\/wp\/v2\/comments?post=98"}],"version-history":[{"count":0,"href":"https:\/\/wp.stolaf.edu\/cs\/wp-json\/wp\/v2\/pages\/98\/revisions"}],"wp:attachment":[{"href":"https:\/\/wp.stolaf.edu\/cs\/wp-json\/wp\/v2\/media?parent=98"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}