Refactoring to Patterns<\/em><\/a>. Fowler is the “standard” in the field; the first five chapters of his book are absolutely classic material on the realities of software development and should be read by pretty much anyone who aspires to write good software. Kerievsky’s book builds on Fowler and does a really nice job of demystifying design patterns, converting them from magical insights codified by geniuses into things you could discover on your own through careful refactoring. When I last taught it I think I had Kerievsky as the required text and Fowler as the optional book. Given that together they still add up to less than $100, I’m tempted to require them both. We have lots of copies of Fowler in the lab, though, so I might just require Kerievsky again. Ideas\/thoughts on this would definitely be appreciated.<\/p>\nOne of the problems we’ve run into in this course in the past has been attempting refactorings on code with limited automated testing. Without good tests you lose your courage to refactor mercilessly, or you have false courage and end up breaking things without realizing it until (sometimes much) later. With only 2 credits to work with, however, you don’t want to spend two weeks writing unit tests for a system before you can start refactoring it, especially when you don’t really understand what the units are and what they’re supposed to be doing. This time I’m planning to use BDD tools like Cucumber, RSpec, and JBehave this time to more cheaply write high level acceptance\/functional tests that exercise the key parts of the system in meaningful ways without getting bogged down in a bunch of poorly understood unit tests. We’ll see how that goes.<\/p>\n
Wrap-up<\/strong><\/p>\nSo, there they be. Any thoughts, ideas, or suggestions would be greatly appreciated, especially on the Models of Computing Systems course.<\/p>\n","protected":false},"excerpt":{"rendered":"
Some deluded people believe that textbook orders for Fall Semester were due a month ago, but I’m never, ever close to on-time on these things, and am just now getting to it in a serious way. I’m teaching three courses in the fall: Models of Computing Systems Fuzzy logic and fuzzy sets Refactoring I’ve taught … Continue reading “Looking for (text)book recommendations: OS, Networking, Sysadmin; Fuzzy logic; and Refactoring”<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[8,4,17],"tags":[447,862,859,446,448,445,444,450,452,453,449,220,84,257,451,156,351,443,861],"class_list":["post-1012","post","type-post","status-publish","format-standard","hentry","category-books","category-computing","category-education","tag-assembly-language","tag-books","tag-computing","tag-computing-systems","tag-core-courses","tag-fuzzy-logic","tag-fuzzy-sets","tag-models-of-computing-systems","tag-networks","tag-operating-systems","tag-refactoring","tag-software-design","tag-software-development","tag-students","tag-sysadmin","tag-teaching","tag-textbook","tag-textbook-orders","tag-writing"],"jetpack_shortlink":"https:\/\/wp.me\/p90sy-gk","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"jetpack-related-posts":[{"id":1573,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2012\/07\/21\/an-unsolicited-forward-to-an-unfinished-book\/","url_meta":{"origin":1012,"position":0},"title":"An unsolicited forward to an unfinished book","author":"Nic McPhee","date":"21 Jul 12","format":false,"excerpt":"Bill Tozier was generous enough to share an early draft of his book-in-progress, currently entitled Answer factories: The engineering of useful surprises. It's a true joy, and I'm really looking forward to being able to read the \"finished\" work. It's a project oriented book, though, which means that to really\u2026","rel":"","context":"In "Books"","block_context":{"text":"Books","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/writing\/books\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":659,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2007\/10\/01\/what-does-refactoring-really-mean\/","url_meta":{"origin":1012,"position":1},"title":"What does refactoring really mean?","author":"Nic McPhee","date":"1 Oct 07","format":false,"excerpt":"I just stumbled across this cool essay on refactoring by Steve Yegge. I don't agree with everything (there's a comment near the bottom that I agree with a lot), but there's some very cool stuff here about the \"real\" meaning of refactoring, and the importance (or lack thereof) of automated\u2026","rel":"","context":"In "General"","block_context":{"text":"General","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":298,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2006\/01\/13\/links-for-2006-01-13\/","url_meta":{"origin":1012,"position":2},"title":"links for 2006-01-13","author":"Nic McPhee","date":"13 Jan 06","format":false,"excerpt":"Extreme Programming: A Gentle Introduction. An excellent overview of the key ideas of extreme programming\/agile development. (tags: agile code design development planning programming project projectmanagement software testing xp methodology UMM:CSci3601) XProgramming.com - an Agile Software Development Resource Ron Jeffries' site on XP. I really don't like the design, but there's\u2026","rel":"","context":"In "Daily links"","block_context":{"text":"Daily links","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/daily-links\/"},"img":{"alt_text":"Mule, spinning","src":"https:\/\/i0.wp.com\/static.flickr.com\/10\/17462199_e014cfe86b_m.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":422,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2007\/01\/05\/422\/","url_meta":{"origin":1012,"position":3},"title":"The importance of language and notation in problem solving","author":"Nic McPhee","date":"5 Jan 07","format":false,"excerpt":"Found this in the slides for a presentation by Jim Weirich entitled \"10 things every Java programmer should know about Ruby\": A language that doesn\u2019t affect the way you think about programming is not worth knowing \u2014 Alan Perlis Amen, brother! A little searching reveals that it was included in\u2026","rel":"","context":"In "Computing"","block_context":{"text":"Computing","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/computing\/"},"img":{"alt_text":"Pointed words","src":"https:\/\/i0.wp.com\/farm1.static.flickr.com\/22\/27703239_dc6a4d0d9e_m.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":349,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2006\/06\/19\/just-busy-playing-with-the-cat\/","url_meta":{"origin":1012,"position":4},"title":"Just busy playing with the cat","author":"Nic McPhee","date":"19 Jun 06","format":false,"excerpt":"I'm not dead, just busy with a thousand things (including playing with the cat). I'm up to my ears in playing sysadmin at home (any suggestions on Mac OS X backup systems for a collection of laptops and a desktop\/server box?), getting some photos printed for the PRCA (go here\u2026","rel":"","context":"In "Computing"","block_context":{"text":"Computing","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/computing\/"},"img":{"alt_text":"Playing with the cat","src":"https:\/\/i0.wp.com\/static.flickr.com\/64\/166854481_fca1315006_m.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":478,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2007\/02\/19\/its-hard-for-us-old-folks-to-get-it-or-teach-it\/","url_meta":{"origin":1012,"position":5},"title":"It’s hard for us old folks to get it (or teach it)","author":"Nic McPhee","date":"19 Feb 07","format":false,"excerpt":"John Naughton had a nice column in The Observer last month about the chronic problems with IT courses for kids. There had been a plan for a new required exam in information and communication technology (ICT) for 14 year olds in the UK, but enthusiasm for the requirement has waned\u2026","rel":"","context":"In "Computing"","block_context":{"text":"Computing","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/computing\/"},"img":{"alt_text":"Four heads are better than one","src":"https:\/\/i0.wp.com\/farm1.static.flickr.com\/100\/279625345_412cdf3ef2_m.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/posts\/1012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/comments?post=1012"}],"version-history":[{"count":9,"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/posts\/1012\/revisions"}],"predecessor-version":[{"id":1021,"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/posts\/1012\/revisions\/1021"}],"wp:attachment":[{"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/media?parent=1012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/categories?post=1012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/tags?post=1012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}