Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://roclocality.wordpress.com/feed

  1. <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  2. xmlns:content="http://purl.org/rss/1.0/modules/content/"
  3. xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  4. xmlns:dc="http://purl.org/dc/elements/1.1/"
  5. xmlns:atom="http://www.w3.org/2005/Atom"
  6. xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  7. xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  8. xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
  9. >
  10.  
  11. <channel>
  12. <title>Rochester Programming Systems Reseach</title>
  13. <atom:link href="https://roclocality.org/feed/" rel="self" type="application/rss+xml" />
  14. <link>https://roclocality.org</link>
  15. <description></description>
  16. <lastBuildDate>Mon, 15 Apr 2024 18:41:01 +0000</lastBuildDate>
  17. <language>en</language>
  18. <sy:updatePeriod>
  19. hourly </sy:updatePeriod>
  20. <sy:updateFrequency>
  21. 1 </sy:updateFrequency>
  22. <generator>http://wordpress.com/</generator>
  23.  
  24. <image>
  25. <url>https://roclocality.files.wordpress.com/2020/04/cropped-roclocicon.png?w=32</url>
  26. <title>Rochester Programming Systems Reseach</title>
  27. <link>https://roclocality.org</link>
  28. <width>32</width>
  29. <height>32</height>
  30. </image>
  31. <cloud domain='roclocality.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
  32. <atom:link rel="search" type="application/opensearchdescription+xml" href="https://roclocality.org/osd.xml" title="Rochester Programming Systems Reseach" />
  33. <atom:link rel='hub' href='https://roclocality.org/?pushpress=hub'/>
  34. <item>
  35. <title>Parallel Matrix Multiplication in Rayon Rust</title>
  36. <link>https://roclocality.org/2024/04/15/parallel-matrix-multiplication-in-rayon-rust/</link>
  37. <comments>https://roclocality.org/2024/04/15/parallel-matrix-multiplication-in-rayon-rust/#respond</comments>
  38. <dc:creator><![CDATA[ssun25]]></dc:creator>
  39. <pubDate>Mon, 15 Apr 2024 18:19:14 +0000</pubDate>
  40. <category><![CDATA[Uncategorized]]></category>
  41. <guid isPermaLink="false">http://roclocality.org/?p=3364</guid>
  42.  
  43. <description><![CDATA[Shaotong Sun This post is written for an assignment for CSC 252 based on my tutorial given at ACM Chapter workshop titled &#8220;General Introduction of Parallel Programming Schemes in Different Languages.&#8221; Rust, like C or C++, is a system-level programming language, but unlike C and C++, it has more features on memory safety issues and [&#8230;]]]></description>
  44. <content:encoded><![CDATA[
  45. <h2 class="wp-block-heading">Shaotong Sun</h2>
  46.  
  47.  
  48.  
  49. <p><em>This post is written for an assignment for CSC 252 based on my tutorial given at ACM Chapter workshop titled &#8220;General Introduction of Parallel Programming Schemes in Different Languages.&#8221;</em></p>
  50.  
  51.  
  52.  
  53. <p>Rust, like C or C++, is a system-level programming language, but unlike C and C++, it has more features on memory safety issues and useability. In other words, it &#8220;gives you the option to control low-level details (such as memory usage) without all the hassle traditionally associated with such control.&#8221;<sup data-fn="e746a6bc-eea9-4342-bb4c-5f22b9d0ee12" class="fn"><a href="#e746a6bc-eea9-4342-bb4c-5f22b9d0ee12" id="e746a6bc-eea9-4342-bb4c-5f22b9d0ee12-link">1</a></sup></p>
  54.  
  55.  
  56.  
  57. <p>For installation of the Rust, please refer to <a href="https://doc.rust-lang.org/book/ch01-01-installation.html">https://doc.rust-lang.org/book/ch01-01-installation.html</a>. </p>
  58.  
  59.  
  60.  
  61. <h2 class="wp-block-heading">Ownership in Rust</h2>
  62.  
  63.  
  64.  
  65. <p>As mentioned above, Rust language is designed to focus on memory safety issues. To this end, Rust uses something called Ownership. &#8220;Ownership is Rust’s most unique feature and has deep implications for the rest of the language. It enables Rust to make memory safety guarantees without needing a garbage collector.&#8221;<sup data-fn="42dbb7f4-62d7-4da0-ac83-a48288109d17" class="fn"><a href="#42dbb7f4-62d7-4da0-ac83-a48288109d17" id="42dbb7f4-62d7-4da0-ac83-a48288109d17-link">2</a></sup> On the highest level, ownership means that some variable owns some value, and the can only be one owner for a value at a time. Specifically, the Rust Book defines the ownership rules as: </p>
  66.  
  67.  
  68.  
  69. <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
  70. <h3 class="wp-block-heading" id="ownership-rules"><a href="https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html#ownership-rules">Ownership Rules</a></h3>
  71.  
  72.  
  73.  
  74. <ul>
  75. <li>Each value in Rust has an&nbsp;<em>owner</em>.</li>
  76.  
  77.  
  78.  
  79. <li>There can only be one owner at a time.</li>
  80.  
  81.  
  82.  
  83. <li>When the owner goes out of scope, the value will be dropped.</li>
  84. </ul>
  85. <cite><a href="https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html">https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html</a> </cite></blockquote>
  86.  
  87.  
  88.  
  89. <p>This ownership concept not only solves the memory safety issues but also makes writing concurrent programs much more accessible than expected. Having ownership makes issues such as <a href="https://cloudxlab.com/blog/race-condition-and-deadlock/">data race</a> compile-time errors rather than runtime errors in many cases. </p>
  90.  
  91.  
  92.  
  93. <figure class="wp-block-image size-large"><a href="https://cloudxlab.com/blog/race-condition-and-deadlock/"><img width="740" height="392" data-attachment-id="3372" data-permalink="https://roclocality.org/2024/04/15/parallel-matrix-multiplication-in-rayon-rust/image/#main" data-orig-file="https://roclocality.files.wordpress.com/2024/04/image.png" data-orig-size="740,392" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2024/04/image.png?w=300" data-large-file="https://roclocality.files.wordpress.com/2024/04/image.png?w=682" src="https://roclocality.files.wordpress.com/2024/04/image.png?w=740" alt="" class="wp-image-3372" srcset="https://roclocality.files.wordpress.com/2024/04/image.png 740w, https://roclocality.files.wordpress.com/2024/04/image.png?w=150 150w, https://roclocality.files.wordpress.com/2024/04/image.png?w=300 300w" sizes="(max-width: 740px) 100vw, 740px" /></a></figure>
  94.  
  95.  
  96.  
  97. <h2 class="wp-block-heading">Rayon in Rust</h2>
  98.  
  99.  
  100.  
  101. <p>Like OpenMP and OpenCilk in C and C++, Rayon is a data-parallelism library in Rust that helps you write parallel code safely and quickly, which eases you from manual manipulation of threads. </p>
  102.  
  103.  
  104.  
  105. <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
  106. <p>There are two ways to use Rayon:</p>
  107.  
  108.  
  109.  
  110. <ul>
  111. <li><strong>High-level parallel constructs</strong>&nbsp;are the simplest way to use Rayon and also typically the most efficient.
  112. <ul>
  113. <li><a href="https://docs.rs/rayon/latest/rayon/iter/index.html">Parallel iterators</a>&nbsp;make it easy to convert a sequential iterator to execute in parallel.
  114. <ul>
  115. <li>The&nbsp;<a href="https://docs.rs/rayon/latest/rayon/iter/trait.ParallelIterator.html"><code>ParallelIterator</code></a>&nbsp;trait defines general methods for all parallel iterators.</li>
  116.  
  117.  
  118.  
  119. <li>The&nbsp;<a href="https://docs.rs/rayon/latest/rayon/iter/trait.IndexedParallelIterator.html"><code>IndexedParallelIterator</code></a>&nbsp;trait adds methods for iterators that support random access.</li>
  120. </ul>
  121. </li>
  122.  
  123.  
  124.  
  125. <li>The&nbsp;<a href="https://docs.rs/rayon/latest/rayon/slice/trait.ParallelSliceMut.html#method.par_sort"><code>par_sort</code></a>&nbsp;method sorts&nbsp;<code>&amp;mut [T]</code>&nbsp;slices (or vectors) in parallel.</li>
  126.  
  127.  
  128.  
  129. <li><a href="https://docs.rs/rayon/latest/rayon/iter/trait.ParallelExtend.html#tymethod.par_extend"><code>par_extend</code></a>&nbsp;can be used to efficiently grow collections with items produced by a parallel iterator.</li>
  130. </ul>
  131. </li>
  132.  
  133.  
  134.  
  135. <li><strong>Custom tasks</strong>&nbsp;let you divide your work into parallel tasks yourself.
  136. <ul>
  137. <li><a href="https://docs.rs/rayon/latest/rayon/fn.join.html"><code>join</code></a>&nbsp;is used to subdivide a task into two pieces.</li>
  138.  
  139.  
  140.  
  141. <li><a href="https://docs.rs/rayon/latest/rayon/fn.scope.html"><code>scope</code></a>&nbsp;creates a scope within which you can create any number of parallel tasks.</li>
  142.  
  143.  
  144.  
  145. <li><a href="https://docs.rs/rayon/latest/rayon/struct.ThreadPoolBuilder.html"><code>ThreadPoolBuilder</code></a>&nbsp;can be used to create your own thread pools or customize the global one.</li>
  146. </ul>
  147. </li>
  148. </ul>
  149. <cite><a href="https://docs.rs/rayon/latest/rayon/">https://docs.rs/rayon/latest/rayon/</a></cite></blockquote>
  150.  
  151.  
  152.  
  153. <p>This tutorial will only cover the most basic method of parallelizing matrix multiplication using Rayon, which is using parallel iterators (more can be found at: <a href="https://docs.rs/rayon/latest/rayon/">https://docs.rs/rayon/latest/rayon/</a>).  </p>
  154.  
  155.  
  156.  
  157. <p>The most naive way of matrix multiplication in Rust is shown below: </p>
  158.  
  159.  
  160.  
  161. <pre class="wp-block-code"><code>fn seq_mm(a: &amp;&#091;f64], b: &amp;&#091;f64], c: &amp;mut &#091;f64], n: usize) {
  162.    for i in 0..n {
  163.        for j in 0..n {
  164.            for k in 0..n {
  165.                c&#091;i * n + j] += a&#091;i * n + k] * b&#091;k * n + j];
  166.            }
  167.        }
  168.    }
  169. }</code></pre>
  170.  
  171.  
  172.  
  173. <p>By using <code>par_chunks_mut</code>, we can divide the matrix c into <code>n</code> distinct, separate sections, with each section smaller than or equal to <code>n</code>. Rayon then automatically processes these sections in parallel for us.</p>
  174.  
  175.  
  176.  
  177. <pre class="wp-block-code"><code>fn par_mm(a: &amp;&#091;f64], b: &amp;&#091;f64], c: &amp;mut &#091;f64], n: usize) {
  178.    c.par_chunks_mut(n)
  179.        .enumerate()
  180.        .for_each(|(i, c_row)| {
  181.            for j in 0..n {
  182.                for k in 0..n {
  183.                    c_row&#091;j] += a&#091;i * n + k] * b&#091;k * n + j];
  184.                }
  185.            }
  186.        });
  187. }</code></pre>
  188.  
  189.  
  190.  
  191. <p>With <code>n=1000</code> and no other optimizations (meaning <code>cargo run</code>), the sequence matrix multiplication takes around 7 seconds to finish, while the parallel matrix multiplication takes only around 2 seconds.</p>
  192.  
  193.  
  194.  
  195. <h2 class="wp-block-heading">Conclusion</h2>
  196.  
  197.  
  198.  
  199. <p>In conclusion, Rayon in Rust seems to be beginner-friendly and easy to use, producing a relatively good performance without much work. If you are interested in Rayon or Rust, be sure to check out the <a href="https://doc.rust-lang.org/book/">Rust Book</a>. </p>
  200.  
  201.  
  202. <ol class="wp-block-footnotes"><li id="e746a6bc-eea9-4342-bb4c-5f22b9d0ee12"><a href="https://doc.rust-lang.org/book/ch00-00-introduction.html">https://doc.rust-lang.org/book/ch00-00-introduction.html</a> <a href="#e746a6bc-eea9-4342-bb4c-5f22b9d0ee12-link"><img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li><li id="42dbb7f4-62d7-4da0-ac83-a48288109d17"><a href="https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html">https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html</a> <a href="#42dbb7f4-62d7-4da0-ac83-a48288109d17-link"><img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li></ol>]]></content:encoded>
  203. <wfw:commentRss>https://roclocality.org/2024/04/15/parallel-matrix-multiplication-in-rayon-rust/feed/</wfw:commentRss>
  204. <slash:comments>0</slash:comments>
  205. <media:content url="https://0.gravatar.com/avatar/3a5ca8ae696110a18236e3414f16bacff211f147d999081f45dd3a09c75887bd?s=96&#38;d=identicon&#38;r=G" medium="image">
  206. <media:title type="html">ssun25</media:title>
  207. </media:content>
  208.  
  209. <media:content url="https://roclocality.files.wordpress.com/2024/04/image.png?w=740" medium="image" />
  210. </item>
  211. <item>
  212. <title>CSC 252/452 Computer Organization (Spring 2024)</title>
  213. <link>https://roclocality.org/2024/01/10/csc-252-452-computer-organization-spring-2024/</link>
  214. <comments>https://roclocality.org/2024/01/10/csc-252-452-computer-organization-spring-2024/#respond</comments>
  215. <dc:creator><![CDATA[dcompiler]]></dc:creator>
  216. <pubDate>Wed, 10 Jan 2024 00:47:11 +0000</pubDate>
  217. <category><![CDATA[teaching]]></category>
  218. <guid isPermaLink="false">http://roclocality.org/?p=3359</guid>
  219.  
  220. <description><![CDATA[Chen Ding, Professor of Computer ScienceWFs 3:25pm to 4:40 Gavett 206 CSC 252 teaches the fundamentals of modern computer organization, including software and hardware interfaces, assembly languages and C, memory hierarchy and program optimization, data parallelism and GPUs. It shows the underlying physical reality which the virtual world including AI is built and depends on. [&#8230;]]]></description>
  221. <content:encoded><![CDATA[
  222. <p>Chen Ding, Professor of Computer Science<br>WFs 3:25pm to 4:40  Gavett 206</p>
  223.  
  224.  
  225.  
  226. <p>CSC 252 teaches the fundamentals of modern computer organization, including software and hardware interfaces, assembly languages and C, memory hierarchy and program optimization, data parallelism and GPUs. It shows the underlying physical reality which the virtual world including AI is built and depends on.</p>
  227.  
  228.  
  229.  
  230. <h2 class="wp-block-heading">Textbooks</h2>
  231.  
  232.  
  233.  
  234. <p><strong>Introduction to Programming with RISC-V</strong> by Borin, <a href="https://riscv-programming.org/book/riscv-book.html" rel="nofollow">https://riscv-programming.org/book/riscv-book.html</a>, <strong>required: §1 to §7</strong>.</p>
  235.  
  236.  
  237.  
  238. <p><strong>Computer Systems: A Programmer&#8217;s Perspective</strong> 3rd Edition by Bryant and O&#8217;Hallaron, <strong>required: §1, §4.1-4.4, §5 to §12.</strong></p>
  239.  
  240.  
  241.  
  242. <p>For all other information, see <a href="https://learn.rochester.edu/">Blackboard</a>.</p>
  243.  
  244.  
  245.  
  246. <p>Except for using RISC-V as the main assembly language (rather than x86), the course is similar to the <a href="https://cs.rochester.edu/courses/252/spring2023/index.html">Spring 2023 course taught by Professor Yuhao Zhu</a>. The previous year page also includes <a href="https://cs.rochester.edu/courses/252/spring2023/handouts.html">a set of past exams, problem sets, and their solutions</a>.</p>
  247. ]]></content:encoded>
  248. <wfw:commentRss>https://roclocality.org/2024/01/10/csc-252-452-computer-organization-spring-2024/feed/</wfw:commentRss>
  249. <slash:comments>0</slash:comments>
  250. <media:content url="https://2.gravatar.com/avatar/bb1288802728ab165dbb621d90d7a89171da1a576aff99a753e919ee95b9f4ae?s=96&#38;d=identicon&#38;r=G" medium="image">
  251. <media:title type="html">dcompiler</media:title>
  252. </media:content>
  253. </item>
  254. <item>
  255. <title>Two examples of &#8220;modular&#8221; math</title>
  256. <link>https://roclocality.org/2024/01/02/two-examples-of-modular-math/</link>
  257. <comments>https://roclocality.org/2024/01/02/two-examples-of-modular-math/#respond</comments>
  258. <dc:creator><![CDATA[dcompiler]]></dc:creator>
  259. <pubDate>Tue, 02 Jan 2024 16:28:53 +0000</pubDate>
  260. <category><![CDATA[cs253]]></category>
  261. <guid isPermaLink="false">http://roclocality.org/?p=3348</guid>
  262.  
  263. <description><![CDATA[Tangential to CSC 253/453 on software design but fun to explain when there is enough time in a lecture are these two math problems which are general composite properties that can be proved easily using simple building blocks. Theorem: If a complex value is a root of a polynomial of real-valued coefficients, so is its [&#8230;]]]></description>
  264. <content:encoded><![CDATA[
  265. <p>Tangential to CSC 253/453 on software design but fun to explain when there is enough time in a lecture are these two math problems which are general composite properties that can be proved easily using simple building blocks.</p>
  266.  
  267.  
  268.  
  269. <p>Theorem: If a complex value is a root of a polynomial of real-valued coefficients, so is its conjugate.</p>
  270.  
  271.  
  272.  
  273. <p>To prove this for ALL such polynomials, we need just two properties of complex number arithmetic: (1) the conjugate of the sum is the sum of the conjugates, and (2) the conjugate of the product is the product of the conjugates. These are binary operations and can be shown easily. Then for any real-valued polynomial f(x), we have f(~x) = ~f(x) = ~0 = 0, and the theorem is proved.</p>
  274.  
  275.  
  276.  
  277. <p>Theorem: In a triangle, a median is a line from an end point to the center of the opposite side. For any triangle, its three medians meet at one point which is 1/3 the way from the end point to the edge.</p>
  278.  
  279.  
  280.  
  281. <p>To prove this for ALL triangles, we use a property of a single line segment. Let P be a mid-point on the line segment P1P2. Let the (complex-plane) coordinates of P1, P2, P be x, y, z, and the ratio r = P1P / PP2, then we have z = (x + ry) / (1 + r). If we use this equation to compute the coordinate of the 1/3-way point of the three medians, we&#8217;ll see that they are identical: 1/3(x1+x2+x3), where xs are the coordinates of the three end-points of the triangle.</p>
  282.  
  283.  
  284.  
  285. <p>Source: An Imaginary Tale &#8212; The Story of i, by Paul J. Nahin, Princeton U Press, 1998.</p>
  286.  
  287.  
  288.  
  289. <figure class="wp-block-image size-large"><a href="https://roclocality.files.wordpress.com/2024/01/kaave-dimension-reduction.jpg"><img width="748" height="751" data-attachment-id="3357" data-permalink="https://roclocality.org/2024/01/02/two-examples-of-modular-math/kaave-dimension-reduction-2/#main" data-orig-file="https://roclocality.files.wordpress.com/2024/01/kaave-dimension-reduction.jpg" data-orig-size="748,751" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="kaave-dimension-reduction" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2024/01/kaave-dimension-reduction.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2024/01/kaave-dimension-reduction.jpg?w=682" src="https://roclocality.files.wordpress.com/2024/01/kaave-dimension-reduction.jpg?w=748" alt="" class="wp-image-3357" srcset="https://roclocality.files.wordpress.com/2024/01/kaave-dimension-reduction.jpg 748w, https://roclocality.files.wordpress.com/2024/01/kaave-dimension-reduction.jpg?w=150 150w, https://roclocality.files.wordpress.com/2024/01/kaave-dimension-reduction.jpg?w=300 300w" sizes="(max-width: 748px) 100vw, 748px" /></a></figure>
  290.  
  291.  
  292.  
  293. <p>Photo credit: AI generated by Kaave Hosseini for CSC 484 for &#8220;dimension reduction&#8221;</p>
  294. ]]></content:encoded>
  295. <wfw:commentRss>https://roclocality.org/2024/01/02/two-examples-of-modular-math/feed/</wfw:commentRss>
  296. <slash:comments>0</slash:comments>
  297. <media:content url="https://2.gravatar.com/avatar/bb1288802728ab165dbb621d90d7a89171da1a576aff99a753e919ee95b9f4ae?s=96&#38;d=identicon&#38;r=G" medium="image">
  298. <media:title type="html">dcompiler</media:title>
  299. </media:content>
  300.  
  301. <media:content url="https://roclocality.files.wordpress.com/2024/01/kaave-dimension-reduction.jpg?w=748" medium="image" />
  302. </item>
  303. <item>
  304. <title>CSC 253/453 Collaborative Software Design (Syllabus, Fall 2023)</title>
  305. <link>https://roclocality.org/2023/12/11/csc-253-453-collaborative-software-design-syllabus-fall-2023/</link>
  306. <comments>https://roclocality.org/2023/12/11/csc-253-453-collaborative-software-design-syllabus-fall-2023/#respond</comments>
  307. <dc:creator><![CDATA[dcompiler]]></dc:creator>
  308. <pubDate>Mon, 11 Dec 2023 07:54:10 +0000</pubDate>
  309. <category><![CDATA[cs253]]></category>
  310. <category><![CDATA[algorithmic-fairness]]></category>
  311. <category><![CDATA[david-parnas]]></category>
  312. <category><![CDATA[frederick-brooks]]></category>
  313. <category><![CDATA[functional-programming]]></category>
  314. <category><![CDATA[john-stuart-mill]]></category>
  315. <category><![CDATA[rust]]></category>
  316. <category><![CDATA[software-design]]></category>
  317. <guid isPermaLink="false">http://roclocality.org/?p=3338</guid>
  318.  
  319. <description><![CDATA[Chen Ding, Professor of Computer ScienceMWs 3:25pm to 4:40 Hylan 202 Modern software is complex and more than a single person can fully comprehend. This course teaches collaborative programming which is multi-person construction of software where each person’s contribution is non-trivial and clearly defined and documented.  The material to study includes design principles, safe and [&#8230;]]]></description>
  320. <content:encoded><![CDATA[
  321. <p>Chen Ding, Professor of Computer Science<br>MWs 3:25pm to 4:40 Hylan 202</p>
  322.  
  323.  
  324.  
  325. <p>Modern software is complex and more than a single person can fully comprehend. This course teaches collaborative programming which is multi-person construction of software where each person’s contribution is non-trivial and clearly defined and documented.  The material to study includes design principles, safe and modular programming in modern programming languages, software teams and development processes, design patterns, and productivity tools.  The assignments include collaborative programming and software design and development in teams.  The primary programming language taught and used in the assignments is Rust. Students in CSC 453 have additional reading and requirements.</p>
  326.  
  327.  
  328.  
  329. <h2 class="wp-block-heading"><strong>Principles</strong></h2>
  330.  
  331.  
  332.  
  333. <ul>
  334. <li>Essential Difficulties: Complexity, Conformity, Changeability</li>
  335.  
  336.  
  337.  
  338. <li>Module Criteria</li>
  339.  
  340.  
  341.  
  342. <li>The Modular Structure of Complex Software</li>
  343.  
  344.  
  345.  
  346. <li>Design and Development of Program Families</li>
  347.  
  348.  
  349.  
  350. <li>Designing for Software Extension and Contraction</li>
  351. </ul>
  352.  
  353.  
  354.  
  355. <h2 class="wp-block-heading"><strong>Rust</strong> </h2>
  356.  
  357.  
  358.  
  359. <ul>
  360. <li>Programming without Loops and Branches: Iterators, Closures</li>
  361.  
  362.  
  363.  
  364. <li>Error Handling: Option, Result</li>
  365.  
  366.  
  367.  
  368. <li>Code Reuse: Generic Type, Trait, Trait Bound</li>
  369.  
  370.  
  371.  
  372. <li>Memory Safety: Ownership, Borrow, Lifetime, Smart Pointer</li>
  373. </ul>
  374.  
  375.  
  376.  
  377. <h2 class="wp-block-heading"><strong>Software Design</strong></h2>
  378.  
  379.  
  380.  
  381. <ul>
  382. <li>Distributed Version Control</li>
  383.  
  384.  
  385.  
  386. <li>Behavioral Design Patterns: Command, New Type, RAII Guards, Strategy</li>
  387.  
  388.  
  389.  
  390. <li>Creational Design Pattern: Builder</li>
  391.  
  392.  
  393.  
  394. <li>Trait Object and State Pattern</li>
  395.  
  396.  
  397.  
  398. <li>Meta Programming </li>
  399.  
  400.  
  401.  
  402. <li>Logging and Serialization</li>
  403. </ul>
  404.  
  405.  
  406.  
  407. <h2 class="wp-block-heading"><strong>Software Engineering</strong></h2>
  408.  
  409.  
  410.  
  411. <ul>
  412. <li>Team</li>
  413.  
  414.  
  415.  
  416. <li>Unified Software Development Process</li>
  417.  
  418.  
  419.  
  420. <li>Testing</li>
  421.  
  422.  
  423.  
  424. <li>Code Review</li>
  425. </ul>
  426.  
  427.  
  428.  
  429. <h2 class="wp-block-heading"><strong>Human Value</strong>s</h2>
  430.  
  431.  
  432.  
  433. <ul>
  434. <li>Apportionment</li>
  435.  
  436.  
  437.  
  438. <li>Algorithmic Fairness</li>
  439.  
  440.  
  441.  
  442. <li>Fallibility and Truth Seeking</li>
  443. </ul>
  444.  
  445.  
  446.  
  447. <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
  448. <p><strong>Past Students&#8217; Comments</strong></p>
  449. <cite>&#8220;Separation of concern is perhaps my favorite topic in software development right now; I love making software as modular and reusable as possible. Taking CSC 253 also helped me to understand the MVC architecture in mobile app development class almost immediately.”  (Fall 2022)<br><br>&#8220;A huge part of the course is graded on a complete group project. You&#8217;re assigned a random group, and you better pray to get group members who show up to class and do their parts.”  (Feb. 2023)<br><br>&#8220;The lessons on iterators truly opened my eyes to a whole new world of thinking about programming, and thinking about modules helped me understand the concept of information hiding and team collaboration, and especially communication and just how important it is. I will be bringing my learnings from your class to Seattle this summer for sure!”  (Fall 2022)<br><br>&#8220;The most meaningful part is doing the final project &#8211; DVCS in group with other 4 outstanding classmates. In this project, I learned how Git works, how to apply the design principles into practice, and how to collaborate well with others in programming. The reward didn’t show up immediately when and after the class, but afterward when I looked for an SDE job and prepared for the interviews, I was reminded of what I learned in the CSC453 course and found out how useful it is to my career.”  (Fall 2021)</cite></blockquote>
  450.  
  451.  
  452.  
  453. <blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
  454. <p><strong>On Rust</strong></p>
  455. <cite>&#8220;Speaking of languages, it&#8217;s time to halt starting any new projects in C/C++ and use Rust for those scenarios where a non-GC language is required. For the sake of security and reliability. the industry should declare those languages as deprecated.”  &#8211; Mark Russinovich, CTO of Microsoft Azure, author of novels Rogue Code, Zero Day and Trojan Horse, Windows Internals, Sysinternals tools, author of novels Rogue Code, Zero Day and Trojan Horse, Windows Internals, Sysinternals tools, 9/19/2022</cite></blockquote>
  456. ]]></content:encoded>
  457. <wfw:commentRss>https://roclocality.org/2023/12/11/csc-253-453-collaborative-software-design-syllabus-fall-2023/feed/</wfw:commentRss>
  458. <slash:comments>0</slash:comments>
  459. <media:content url="https://2.gravatar.com/avatar/bb1288802728ab165dbb621d90d7a89171da1a576aff99a753e919ee95b9f4ae?s=96&#38;d=identicon&#38;r=G" medium="image">
  460. <media:title type="html">dcompiler</media:title>
  461. </media:content>
  462. </item>
  463. <item>
  464. <title>CSC 258/458 Parallel and Distributed Systems Spring 2023</title>
  465. <link>https://roclocality.org/2023/06/14/csc-258-458-parallel-and-distributed-systems-spring-2023/</link>
  466. <comments>https://roclocality.org/2023/06/14/csc-258-458-parallel-and-distributed-systems-spring-2023/#respond</comments>
  467. <dc:creator><![CDATA[dcompiler]]></dc:creator>
  468. <pubDate>Wed, 14 Jun 2023 13:16:45 +0000</pubDate>
  469. <category><![CDATA[cs258]]></category>
  470. <category><![CDATA[teaching]]></category>
  471. <guid isPermaLink="false">http://roclocality.org/?p=3322</guid>
  472.  
  473. <description><![CDATA[Instructor: Professor Chen Ding Teaching Assistant: Owen Wacha Course Schedule: Final Projects with Introduction by Woody Wu and Presentation Slides Course Evaluation Result]]></description>
  474. <content:encoded><![CDATA[
  475. <p><strong>Instructor: Professor Chen Ding</strong></p>
  476.  
  477.  
  478.  
  479. <figure class="wp-block-image size-large is-resized"><a href="https://roclocality.files.wordpress.com/2023/06/dingsc22.jpg"><img data-attachment-id="3323" data-permalink="https://roclocality.org/2023/06/14/csc-258-458-parallel-and-distributed-systems-spring-2023/dingsc22/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/dingsc22.jpg" data-orig-size="4032,3024" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;1.6&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 12 mini&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1668594903&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.2&quot;,&quot;iso&quot;:&quot;80&quot;,&quot;shutter_speed&quot;:&quot;0.014925373134328&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;,&quot;latitude&quot;:&quot;32.772869444444&quot;,&quot;longitude&quot;:&quot;-96.802544444444&quot;}" data-image-title="dingsc22" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/dingsc22.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/dingsc22.jpg?w=682" src="https://roclocality.files.wordpress.com/2023/06/dingsc22.jpg?w=1024" alt="" class="wp-image-3323" width="348" height="261" srcset="https://roclocality.files.wordpress.com/2023/06/dingsc22.jpg?w=348 348w, https://roclocality.files.wordpress.com/2023/06/dingsc22.jpg?w=696 696w, https://roclocality.files.wordpress.com/2023/06/dingsc22.jpg?w=150 150w, https://roclocality.files.wordpress.com/2023/06/dingsc22.jpg?w=300 300w" sizes="(max-width: 348px) 100vw, 348px" /></a></figure>
  480.  
  481.  
  482.  
  483. <p><strong>Teaching Assistant: Owen Wacha</strong></p>
  484.  
  485.  
  486.  
  487. <figure class="wp-block-image size-large is-resized"><a href="https://roclocality.files.wordpress.com/2023/06/owen-wacha-ta-picture.png"><img loading="lazy" data-attachment-id="3325" data-permalink="https://roclocality.org/2023/06/14/csc-258-458-parallel-and-distributed-systems-spring-2023/owen-wacha-ta-picture/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/owen-wacha-ta-picture.png" data-orig-size="572,650" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="owen-wacha-ta-picture" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/owen-wacha-ta-picture.png?w=264" data-large-file="https://roclocality.files.wordpress.com/2023/06/owen-wacha-ta-picture.png?w=572" src="https://roclocality.files.wordpress.com/2023/06/owen-wacha-ta-picture.png?w=572" alt="" class="wp-image-3325" width="218" height="247" srcset="https://roclocality.files.wordpress.com/2023/06/owen-wacha-ta-picture.png?w=218 218w, https://roclocality.files.wordpress.com/2023/06/owen-wacha-ta-picture.png?w=436 436w, https://roclocality.files.wordpress.com/2023/06/owen-wacha-ta-picture.png?w=132 132w, https://roclocality.files.wordpress.com/2023/06/owen-wacha-ta-picture.png?w=264 264w" sizes="(max-width: 218px) 100vw, 218px" /></a></figure>
  488.  
  489.  
  490.  
  491. <p><strong>Course Schedule:</strong></p>
  492.  
  493.  
  494.  
  495. <figure data-carousel-extra='{"blog_id":59712121,"permalink":"https:\/\/roclocality.org\/2023\/06\/14\/csc-258-458-parallel-and-distributed-systems-spring-2023\/"}'  class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex">
  496. <figure class="wp-block-image size-large"><a href="https://roclocality.files.wordpress.com/2023/06/schedule-3-22-2.png"><img loading="lazy" width="808" height="1024" data-attachment-id="3332" data-permalink="https://roclocality.org/2023/06/14/csc-258-458-parallel-and-distributed-systems-spring-2023/schedule-3-22-2/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/schedule-3-22-2.png" data-orig-size="852,1080" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="schedule-3-22-2" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/schedule-3-22-2.png?w=237" data-large-file="https://roclocality.files.wordpress.com/2023/06/schedule-3-22-2.png?w=682" data-id="3332" src="https://roclocality.files.wordpress.com/2023/06/schedule-3-22-2.png?w=808" alt="" class="wp-image-3332" srcset="https://roclocality.files.wordpress.com/2023/06/schedule-3-22-2.png?w=808 808w, https://roclocality.files.wordpress.com/2023/06/schedule-3-22-2.png?w=118 118w, https://roclocality.files.wordpress.com/2023/06/schedule-3-22-2.png?w=237 237w, https://roclocality.files.wordpress.com/2023/06/schedule-3-22-2.png?w=768 768w, https://roclocality.files.wordpress.com/2023/06/schedule-3-22-2.png 852w" sizes="(max-width: 808px) 100vw, 808px" /></a></figure>
  497. </figure>
  498.  
  499.  
  500.  
  501. <p><strong><a href="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/">Final Projects with Introduction by Woody Wu</a> and <a href="https://github.com/dcompiler/258s23">Presentation Slides</a></strong></p>
  502.  
  503.  
  504.  
  505. <p><strong>Course Evaluation Result</strong></p>
  506.  
  507.  
  508.  
  509. <figure class="wp-block-image size-large"><a href="https://roclocality.files.wordpress.com/2023/06/course-eval-summary.png"><img loading="lazy" width="1024" height="275" data-attachment-id="3333" data-permalink="https://roclocality.org/2023/06/14/csc-258-458-parallel-and-distributed-systems-spring-2023/course-eval-summary/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/course-eval-summary.png" data-orig-size="1904,512" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="course-eval-summary" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/course-eval-summary.png?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/course-eval-summary.png?w=682" src="https://roclocality.files.wordpress.com/2023/06/course-eval-summary.png?w=1024" alt="" class="wp-image-3333" srcset="https://roclocality.files.wordpress.com/2023/06/course-eval-summary.png?w=1024 1024w, https://roclocality.files.wordpress.com/2023/06/course-eval-summary.png?w=150 150w, https://roclocality.files.wordpress.com/2023/06/course-eval-summary.png?w=300 300w, https://roclocality.files.wordpress.com/2023/06/course-eval-summary.png?w=768 768w, https://roclocality.files.wordpress.com/2023/06/course-eval-summary.png 1904w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
  510. ]]></content:encoded>
  511. <wfw:commentRss>https://roclocality.org/2023/06/14/csc-258-458-parallel-and-distributed-systems-spring-2023/feed/</wfw:commentRss>
  512. <slash:comments>0</slash:comments>
  513. <media:content url="https://2.gravatar.com/avatar/bb1288802728ab165dbb621d90d7a89171da1a576aff99a753e919ee95b9f4ae?s=96&#38;d=identicon&#38;r=G" medium="image">
  514. <media:title type="html">dcompiler</media:title>
  515. </media:content>
  516.  
  517. <media:content url="https://roclocality.files.wordpress.com/2023/06/dingsc22.jpg?w=1024" medium="image" />
  518.  
  519. <media:content url="https://roclocality.files.wordpress.com/2023/06/owen-wacha-ta-picture.png?w=572" medium="image" />
  520.  
  521. <media:content url="https://roclocality.files.wordpress.com/2023/06/schedule-3-22-2.png?w=808" medium="image" />
  522.  
  523. <media:content url="https://roclocality.files.wordpress.com/2023/06/course-eval-summary.png?w=1024" medium="image" />
  524. </item>
  525. <item>
  526. <title>Exploring Parallel and Distributed Programming: Student Presentations Showcase Projects</title>
  527. <link>https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/</link>
  528. <comments>https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/#comments</comments>
  529. <dc:creator><![CDATA[woodywhimsy]]></dc:creator>
  530. <pubDate>Mon, 05 Jun 2023 19:35:55 +0000</pubDate>
  531. <category><![CDATA[Uncategorized]]></category>
  532. <guid isPermaLink="false">http://roclocality.org/?p=3274</guid>
  533.  
  534. <description><![CDATA[In the Spring 2023 semester, a group of Parallel and Distributed Programming (CSC 248/448) students showcased their remarkable research and implementations in a series of presentations. Their projects span a wide range of fields, from optimization algorithms to parallel computing frameworks. Here is some brief Information about their presentations. The presentation slides can be found [&#8230;]]]></description>
  535. <content:encoded><![CDATA[
  536. <p>In the Spring 2023 semester, a group of Parallel and Distributed Programming (CSC 248/448) students showcased their remarkable research and implementations in a series of presentations. Their projects span a wide range of fields, from optimization algorithms to parallel computing frameworks. Here is some brief Information about their presentations.</p>
  537.  
  538.  
  539.  
  540. <ol>
  541. <li>Aayush Poudel: Ant Colony Optimization (ACO) for the Traveling Salesman Problem (TSP)
  542. <ul>
  543. <li>Aayush Poudel&#8217;s presentation revolved around the fascinating application of Ant Colony Optimization to solve the Traveling Salesman Problem.</li>
  544.  
  545.  
  546.  
  547. <li><img data-attachment-id="3282" data-permalink="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/aayush-poudel/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/aayush-poudel.jpg" data-orig-size="3000,1687" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Aayush Poudel" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/aayush-poudel.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/aayush-poudel.jpg?w=682" class="wp-image-3282" style="width: 350px" src="https://roclocality.files.wordpress.com/2023/06/aayush-poudel.jpg" alt=""></li>
  548. </ul>
  549. </li>
  550.  
  551.  
  552.  
  553. <li>Matt Nappo: GPU Implementation of ACO for TSP In his presentation
  554. <ul>
  555. <li>By harnessing the parallel processing capabilities of GPUs, Matt demonstrated an efficient implementation of ACO for the Traveling Salesman Problem.</li>
  556.  
  557.  
  558.  
  559. <li></li>
  560. </ul>
  561. </li>
  562.  
  563.  
  564.  
  565. <li>Yifan Zhu and Zeliang Zhang: Parallel ANN Framework in Rust
  566. <ul>
  567. <li>Yifan Zhu and Zeliang Zhang collaborated on a project that involved building a parallel Artificial Neural Network (ANN) framework using the Rust programming language. Their framework leveraged the inherent parallelism in neural networks, unlocking increased performance and scalability. </li>
  568.  
  569.  
  570.  
  571. <li><img data-attachment-id="3288" data-permalink="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/yifan-zhu-001/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/yifan-zhu.001.jpeg" data-orig-size="1920,1080" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Yifan Zhu.001" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/yifan-zhu.001.jpeg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/yifan-zhu.001.jpeg?w=682" class="wp-image-3288" style="width: 350px" src="https://roclocality.files.wordpress.com/2023/06/yifan-zhu.001.jpeg" alt=""><img data-attachment-id="3290" data-permalink="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/zeliang-zhang/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/zeliang-zhang.jpg" data-orig-size="3000,1687" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Zeliang Zhang" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/zeliang-zhang.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/zeliang-zhang.jpg?w=682" class="wp-image-3290" style="width: 400px" src="https://roclocality.files.wordpress.com/2023/06/zeliang-zhang.jpg" alt=""></li>
  572. </ul>
  573. </li>
  574.  
  575.  
  576.  
  577. <li>Jiakun Fan: Implementing Software Transactional Memory using Rust
  578. <ul>
  579. <li>Jiakun Fan delved into concurrency control by implementing Software Transactional Memory (STM) using the Rust programming language. STM provides an alternative approach to traditional lock-based synchronization, allowing for simplified concurrent programming. Jiakun&#8217;s project showcased the feasibility of utilizing Rust&#8217;s unique features to build concurrent systems.</li>
  580.  
  581.  
  582.  
  583. <li><img data-attachment-id="3283" data-permalink="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/jiakun-fan/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/jiakun-fan.jpg" data-orig-size="4000,2250" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Jiakun Fan" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/jiakun-fan.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/jiakun-fan.jpg?w=682" class="wp-image-3283" style="width: 350px" src="https://roclocality.files.wordpress.com/2023/06/jiakun-fan.jpg" alt=""></li>
  584. </ul>
  585. </li>
  586.  
  587.  
  588.  
  589. <li>Shaotong Sun and Jionghao Han: PLUSS Sampler Optimization
  590. <ul>
  591. <li>Shaotong Sun and Jionghao Han collaborated on a project to optimize the PLUSS sampler. Their work involved enhancing the performance and efficiency of the sampler through parallelization techniques.</li>
  592.  
  593.  
  594.  
  595. <li><img data-attachment-id="3284" data-permalink="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/shaotong-sun/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/shaotong-sun.jpg" data-orig-size="1920,1080" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Shaotong Sun" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/shaotong-sun.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/shaotong-sun.jpg?w=682" class="wp-image-3284" style="width: 350px" src="https://roclocality.files.wordpress.com/2023/06/shaotong-sun.jpg" alt=""></li>
  596. </ul>
  597. </li>
  598.  
  599.  
  600.  
  601. <li>Yiming Leng: Survey Study of Parallel A*
  602. <ul>
  603. <li>Yiming Leng undertook a comprehensive survey study exploring the parallelization of the A* search algorithm. A* is widely used in pathfinding and optimization problems, and Yiming&#8217;s research focused on the potential benefits and challenges of parallelizing this popular algorithm.</li>
  604.  
  605.  
  606.  
  607. <li><img data-attachment-id="3289" data-permalink="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/yiming-leng-parallel-astar-slides/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/yiming-leng-parallel-astar-slides.jpg" data-orig-size="1511,1133" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="yiming leng parallel astar slides" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/yiming-leng-parallel-astar-slides.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/yiming-leng-parallel-astar-slides.jpg?w=682" class="wp-image-3289" style="width: 350px" src="https://roclocality.files.wordpress.com/2023/06/yiming-leng-parallel-astar-slides.jpg" alt=""></li>
  608. </ul>
  609. </li>
  610.  
  611.  
  612.  
  613. <li>Ziqi Feng: Design and Evaluation of a Parallel SAT Solver
  614. <ul>
  615. <li>Ziqi Feng&#8217;s presentation concerned designing and evaluating a parallel SAT (Satisfiability) solver. SAT solvers play a crucial role in solving Boolean satisfiability problems, and Ziqi&#8217;s project aimed to enhance their performance by leveraging parallel computing techniques.</li>
  616.  
  617.  
  618.  
  619. <li><img data-attachment-id="3292" data-permalink="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/ziqi-feng/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/ziqi-feng.jpg" data-orig-size="4000,2250" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Ziqi Feng" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/ziqi-feng.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/ziqi-feng.jpg?w=682" class="wp-image-3292" style="width: 350px" src="https://roclocality.files.wordpress.com/2023/06/ziqi-feng.jpg" alt=""></li>
  620. </ul>
  621. </li>
  622.  
  623.  
  624.  
  625. <li>Suumil Roy: Parallel Video Compression using MPI
  626. <ul>
  627. <li>Suumil Roy&#8217;s project focused on leveraging the Message Passing Interface (MPI) for parallel video compression. Video compression is crucial in various domains, including streaming and storage. By leveraging the power of parallel computing, Suumil demonstrated how MPI enables the efficient distribution of computational tasks across multiple processing units.</li>
  628.  
  629.  
  630.  
  631. <li><img data-attachment-id="3286" data-permalink="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/suumil-roy/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/suumil-roy.jpg" data-orig-size="1920,1080" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Suumil Roy" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/suumil-roy.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/suumil-roy.jpg?w=682" class="wp-image-3286" style="width: 350px" src="https://roclocality.files.wordpress.com/2023/06/suumil-roy.jpg" alt=""></li>
  632. </ul>
  633. </li>
  634.  
  635.  
  636.  
  637. <li>Muhammad Qasim: A RAFT-based Key-Value Store Implementation
  638. <ul>
  639. <li>Muhammad Qasim&#8217;s presentation focused on implementing a distributed key-value store using the RAFT consensus algorithm. Key-value stores are fundamental data structures in distributed systems, and the RAFT consensus algorithm ensures fault tolerance and consistency among distributed nodes.</li>
  640.  
  641.  
  642.  
  643. <li><img data-attachment-id="3291" data-permalink="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/zhong-qasim-raft/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/zhong-qasim-raft.jpg" data-orig-size="1920,1080" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="zhong qasim raft" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/zhong-qasim-raft.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/zhong-qasim-raft.jpg?w=682" class="wp-image-3291" style="width: 350px" src="https://roclocality.files.wordpress.com/2023/06/zhong-qasim-raft.jpg" alt=""></li>
  644. </ul>
  645. </li>
  646.  
  647.  
  648.  
  649. <li>Donovan Zhong: RAFT-based Key-Value Storage Implementation
  650. <ul>
  651. <li>Donovan Zhong&#8217;s project complemented Muhammad&#8217;s work by presenting another RAFT-based key-value storage implementation perspective. Donovan&#8217;s implementation provided insights into the challenges and intricacies of building fault-tolerant and distributed key-value storage systems. </li>
  652. </ul>
  653. </li>
  654.  
  655.  
  656.  
  657. <li>Luchuan Song: Highly Parallel Tensor Computation for Classical Simulation of Quantum Circuits Using GPUs
  658. <ul>
  659. <li>Luchuan Song&#8217;s presentation unveiled an approach to parallel tensor computation for the classical simulation of quantum circuits. Quantum computing has the potential to revolutionize various industries, but its simulation on classical computers remains a challenging task. Luchuan&#8217;s project harnessed the power of Graphics Processing Units (GPUs) to accelerate tensor operations, allowing for efficient and scalable simulation of quantum circuits. </li>
  660.  
  661.  
  662.  
  663. <li><img data-attachment-id="3285" data-permalink="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/song-tensor-qcsim/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/song-tensor-qcsim.jpg" data-orig-size="1920,1080" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="song tensor qcsim" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/song-tensor-qcsim.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/song-tensor-qcsim.jpg?w=682" class="wp-image-3285" style="width: 350px" src="https://roclocality.files.wordpress.com/2023/06/song-tensor-qcsim.jpg" alt=""></li>
  664. </ul>
  665. </li>
  666.  
  667.  
  668.  
  669. <li>Woody Wu and Will Nguyen: Parallel N-Body Simulation in Rust Programming Language
  670. <ul>
  671. <li>Working together as a team, Woody Wu and Will Nguyen tackled the intricate task of simulating N-body systems. N-body simulations involve modeling the interactions and movements of particles or celestial bodies, making them essential in various scientific domains. In collaboration, they presented their project using various parallel programming frameworks such as Rust Rayon, MPI, and OpenMP. By leveraging these powerful tools, they explored the realm of high-performance computing to achieve efficient and scalable simulations.</li>
  672.  
  673.  
  674.  
  675. <li><img data-attachment-id="3287" data-permalink="https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/woody_presentation1/#main" data-orig-file="https://roclocality.files.wordpress.com/2023/06/woody_presentation1.jpg" data-orig-size="1920,1080" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Woody_Presentation1" data-image-description="" data-image-caption="" data-medium-file="https://roclocality.files.wordpress.com/2023/06/woody_presentation1.jpg?w=300" data-large-file="https://roclocality.files.wordpress.com/2023/06/woody_presentation1.jpg?w=682" class="wp-image-3287" style="width: 600px" src="https://roclocality.files.wordpress.com/2023/06/woody_presentation1.jpg" alt=""></li>
  676. </ul>
  677. </li>
  678. </ol>
  679.  
  680.  
  681.  
  682. <p>The presentation slides can be found at <a href="https://github.com/dcompiler/258s23" rel="nofollow">https://github.com/dcompiler/258s23</a></p>
  683. ]]></content:encoded>
  684. <wfw:commentRss>https://roclocality.org/2023/06/05/exploring-the-frontiers-of-parallel-and-distributed-programming-student-presentations-showcase-projects/feed/</wfw:commentRss>
  685. <slash:comments>1</slash:comments>
  686. <media:content url="https://0.gravatar.com/avatar/08f4fce036a0f5f4a601f0bd3ede0999f0bddf9d34d473994ae646f0ffb633ab?s=96&#38;d=identicon&#38;r=G" medium="image">
  687. <media:title type="html">woodywhimsy</media:title>
  688. </media:content>
  689.  
  690. <media:content url="https://roclocality.files.wordpress.com/2023/06/aayush-poudel.jpg" medium="image" />
  691.  
  692. <media:content url="https://roclocality.files.wordpress.com/2023/06/yifan-zhu.001.jpeg" medium="image" />
  693.  
  694. <media:content url="https://roclocality.files.wordpress.com/2023/06/zeliang-zhang.jpg" medium="image" />
  695.  
  696. <media:content url="https://roclocality.files.wordpress.com/2023/06/jiakun-fan.jpg" medium="image" />
  697.  
  698. <media:content url="https://roclocality.files.wordpress.com/2023/06/shaotong-sun.jpg" medium="image" />
  699.  
  700. <media:content url="https://roclocality.files.wordpress.com/2023/06/yiming-leng-parallel-astar-slides.jpg" medium="image" />
  701.  
  702. <media:content url="https://roclocality.files.wordpress.com/2023/06/ziqi-feng.jpg" medium="image" />
  703.  
  704. <media:content url="https://roclocality.files.wordpress.com/2023/06/suumil-roy.jpg" medium="image" />
  705.  
  706. <media:content url="https://roclocality.files.wordpress.com/2023/06/zhong-qasim-raft.jpg" medium="image" />
  707.  
  708. <media:content url="https://roclocality.files.wordpress.com/2023/06/song-tensor-qcsim.jpg" medium="image" />
  709.  
  710. <media:content url="https://roclocality.files.wordpress.com/2023/06/woody_presentation1.jpg" medium="image" />
  711. </item>
  712. <item>
  713. <title>CSC 579 Machine-Checked Proofs Using Coq</title>
  714. <link>https://roclocality.org/2022/12/30/csc-579-machine-checked-proofs-using-coq/</link>
  715. <comments>https://roclocality.org/2022/12/30/csc-579-machine-checked-proofs-using-coq/#respond</comments>
  716. <dc:creator><![CDATA[dcompiler]]></dc:creator>
  717. <pubDate>Fri, 30 Dec 2022 15:01:52 +0000</pubDate>
  718. <category><![CDATA[teaching]]></category>
  719. <guid isPermaLink="false">http://roclocality.org/?p=3233</guid>
  720.  
  721. <description><![CDATA[CSC 579 Spring 2023(R 9:40am to 10:55 Lechase 103) Syllabus]]></description>
  722. <content:encoded><![CDATA[
  723. <h2 class="wp-block-heading has-text-align-center">CSC 579 Spring 2023<br>(R 9:40am to 10:55 Lechase 103)</h2>
  724.  
  725.  
  726.  
  727. <h3 class="wp-block-heading">Syllabus</h3>
  728.  
  729.  
  730.  
  731. <ul>
  732. <li>The Need for Training Thought: The Values of Thought. Tendencies Needing Constant Regulation.  Regulation Transforms Inference into Proof.</li>
  733.  
  734.  
  735.  
  736. <li>Type Systems.  Operational Semantics. Progress. Type Preservation. Type Soundness.</li>
  737.  
  738.  
  739.  
  740. <li>Functional Programming in Coq: Data and Functions.  Proof by Simplification, Rewriting and Case Analysis.</li>
  741.  
  742.  
  743.  
  744. <li>Proof by Induction. Proofs Within Proofs.  Formal vs. Informal Proof.</li>
  745.  
  746.  
  747.  
  748. <li>Lists, Options, Partial Maps.</li>
  749.  
  750.  
  751.  
  752. <li>Basic Tactics: apply, apply with, injection, discriminate, unfold, destruct.</li>
  753.  
  754.  
  755.  
  756. <li>Logic in Coq. Logical Connectives: Conjunction, Disjunction, Falsehood and Negation, Truth, Logical Equivalence, Logical Equivalence, Existential Quantification.  Programming with Propositions. Applying Theorems to Arguments. Coq vs. Set Theory: Functional Extensionality, Propositions vs. Booleans, Classical vs. Constructive Logic.</li>
  757.  
  758.  
  759.  
  760. <li>Inductively Defined Propositions. Induction Principles for Propositions.  Induction Over an Inductively Defined Set and an Inductively Defined Proposition.</li>
  761.  
  762.  
  763.  
  764. <li>The Curry-Howard Correspondence. Natural Deduction. Typed Lambda Calculus. Proof Scripts. Quantifiers, Implications, Functions. Logical Connectives as Inductive Types.</li>
  765. </ul>
  766.  
  767.  
  768.  
  769. <div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview"  class="wp-block-file__embed" data="https://roclocality.files.wordpress.com/2022/12/schedule-12-22.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of schedule-12-22."></object><a id="wp-block-file--media-85364642-36aa-443c-9e53-f1293e7e1a9c" href="https://roclocality.files.wordpress.com/2022/12/schedule-12-22.pdf">schedule-12-22</a><a href="https://roclocality.files.wordpress.com/2022/12/schedule-12-22.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-85364642-36aa-443c-9e53-f1293e7e1a9c">Download</a></div>
  770. ]]></content:encoded>
  771. <wfw:commentRss>https://roclocality.org/2022/12/30/csc-579-machine-checked-proofs-using-coq/feed/</wfw:commentRss>
  772. <slash:comments>0</slash:comments>
  773. <media:content url="https://2.gravatar.com/avatar/bb1288802728ab165dbb621d90d7a89171da1a576aff99a753e919ee95b9f4ae?s=96&#38;d=identicon&#38;r=G" medium="image">
  774. <media:title type="html">dcompiler</media:title>
  775. </media:content>
  776. </item>
  777. <item>
  778. <title>Jonathan Waxman UG Honor Thesis: Leasing by Learning Access Modes and Architectures (LLAMA)</title>
  779. <link>https://roclocality.org/2022/12/14/jonathan-waxman-ug-honor-thesis-leasing-by-learning-access-modes-and-architectures-llama/</link>
  780. <comments>https://roclocality.org/2022/12/14/jonathan-waxman-ug-honor-thesis-leasing-by-learning-access-modes-and-architectures-llama/#respond</comments>
  781. <dc:creator><![CDATA[dcompiler]]></dc:creator>
  782. <pubDate>Wed, 14 Dec 2022 20:15:26 +0000</pubDate>
  783. <category><![CDATA[Uncategorized]]></category>
  784. <guid isPermaLink="false">http://roclocality.org/?p=3228</guid>
  785.  
  786. <description><![CDATA[Leasing by Learning Access Modes and Architectures (LLAMA)Jonathan Waxman November 2022 Lease caching and similar technologies yield high performance in both theoretical and practical caching spaces. This thesis proposes a method of lease caching in fixed-size caches that is robust against thrashing, implemented and evaluated in Rust.]]></description>
  787. <content:encoded><![CDATA[
  788. <p>Leasing by Learning Access Modes and Architectures (LLAMA)<br>Jonathan Waxman </p>
  789.  
  790.  
  791.  
  792. <p>November 2022<br><br>Lease caching and similar technologies yield high performance in both theoretical and practical caching spaces. This thesis proposes a method of lease caching in fixed-size caches that is robust against thrashing, implemented and evaluated in Rust.</p>
  793.  
  794.  
  795.  
  796. <div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview"  class="wp-block-file__embed" data="https://roclocality.files.wordpress.com/2022/12/jonathan_waxman_ug_thesis_20022-llama.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of jonathan_waxman_ug_thesis_20022-llama."></object><a id="wp-block-file--media-b1511baa-cd4d-4914-9e72-693c908d0f6d" href="https://roclocality.files.wordpress.com/2022/12/jonathan_waxman_ug_thesis_20022-llama.pdf">jonathan_waxman_ug_thesis_20022-llama</a><a href="https://roclocality.files.wordpress.com/2022/12/jonathan_waxman_ug_thesis_20022-llama.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-b1511baa-cd4d-4914-9e72-693c908d0f6d">Download</a></div>
  797. ]]></content:encoded>
  798. <wfw:commentRss>https://roclocality.org/2022/12/14/jonathan-waxman-ug-honor-thesis-leasing-by-learning-access-modes-and-architectures-llama/feed/</wfw:commentRss>
  799. <slash:comments>0</slash:comments>
  800. <media:content url="https://2.gravatar.com/avatar/bb1288802728ab165dbb621d90d7a89171da1a576aff99a753e919ee95b9f4ae?s=96&#38;d=identicon&#38;r=G" medium="image">
  801. <media:title type="html">dcompiler</media:title>
  802. </media:content>
  803. </item>
  804. <item>
  805. <title>CSC 253/453 Fall 2022</title>
  806. <link>https://roclocality.org/2022/08/15/csc-253-453-fall-2022/</link>
  807. <comments>https://roclocality.org/2022/08/15/csc-253-453-fall-2022/#respond</comments>
  808. <dc:creator><![CDATA[dcompiler]]></dc:creator>
  809. <pubDate>Mon, 15 Aug 2022 14:11:28 +0000</pubDate>
  810. <category><![CDATA[Uncategorized]]></category>
  811. <guid isPermaLink="false">http://roclocality.org/?p=3214</guid>
  812.  
  813. <description><![CDATA[Collaborative Programming and Software Design Prerequisites: CSC 172 or equivalent for CSC 253. &#160;CSC 172 and CSC 252 or equivalent for CSC 453 and TCS 453. Modern software is complex and more than a single person can fully comprehend. This course teaches collaborative programming which is multi-person construction of software where each person&#8217;s contribution is [&#8230;]]]></description>
  814. <content:encoded><![CDATA[
  815. <h2 class="wp-block-heading"><strong>Collaborative Programming and Software Design</strong></h2>
  816.  
  817.  
  818.  
  819. <p><strong>Prerequisites</strong>: <em>CSC 172 or equivalent for CSC 253. &nbsp;CSC 172 and CSC 252 or equivalent for CSC 453 and TCS 453.</em></p>
  820.  
  821.  
  822.  
  823. <p>Modern software is complex and more than a single person can fully comprehend. This course teaches collaborative programming which is multi-person construction of software where each person&#8217;s contribution is non-trivial and clearly defined and documented.  The material to study includes design principles, safe and modular programming in modern programming languages including Rust, software teams and development processes, design patterns, and productivity tools.  The assignments include collaborative programming and software design and development in teams.  Students in CSC 453 and TCS 453 have additional reading and requirements.</p>
  824.  
  825.  
  826.  
  827. <h2 class="wp-block-heading">Syllabus</h2>
  828.  
  829.  
  830.  
  831. <ul><li>SOFTWARE DESIGN<ul><li>Essential Difficulties<ul><li>Complexity, conformity, changeability, invisibility. Their definitions, causes, and examples.  Social and societal impacts of computing.</li></ul></li><li>Module Design Concepts<ul><li>Thinking like a computer and its problems. Four criteria for a module. Modularization by flowcharts vs information hiding. The module structure of a complex system. Module specification.</li></ul></li><li>Software Design Principles<ul><li>Multi-version software design, i.e. program families. Stepwise refinement vs. module specification. Design for prototyping and extension. USE relation.</li></ul></li><li>Software Engineering Practice<ul><li>Unified software development process, and its five workflows and four phases. CMM Maturity.</li></ul></li><li>Teamwork<ul><li>Types of teams: democratic, chief programmer, hybrids. Independence, diversity, and principles of liberty.  Ethics and code of conducts.</li></ul></li></ul></li><li>PROGRAM DESIGN USING RUST<ul><li>Safe Programming<ul><li>Variant types and pattern matching. Slices. Mutability. Ownership, borrow, and lifetime annotations. Smart pointers.</li></ul></li><li>Abstraction and Code Reuse<ul><li>Iterators. Error processing. Generic types and traits. Writing tests. Modules, crates, and packages. Design patterns: iterators, builders, decorators, newtype, strategy, rail, state. Meta-programming.</li></ul></li><li>Meta-programming (453 Only)<ul><li>Declarative and procedural macros. Derived traits.</li></ul></li><li>Software Tools<ul><li>Distributed version control. Logging. Serialization.</li></ul></li></ul></li></ul>
  832.  
  833.  
  834.  
  835. <div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow"></div></div>
  836.  
  837.  
  838.  
  839. <p>The full course information and material are released through <a href="http://learn.rochester.edu">learn.rochester.edu.</a></p>
  840.  
  841.  
  842.  
  843. <p><a href="https://roclocality.org/2022/02/21/csc-253-collaborative-software-design-rate-my-professor-chen-ding/">A summary of the student evaluation for the 2021 course.  </a></p>
  844. ]]></content:encoded>
  845. <wfw:commentRss>https://roclocality.org/2022/08/15/csc-253-453-fall-2022/feed/</wfw:commentRss>
  846. <slash:comments>0</slash:comments>
  847. <media:content url="https://2.gravatar.com/avatar/bb1288802728ab165dbb621d90d7a89171da1a576aff99a753e919ee95b9f4ae?s=96&#38;d=identicon&#38;r=G" medium="image">
  848. <media:title type="html">dcompiler</media:title>
  849. </media:content>
  850. </item>
  851. <item>
  852. <title>CSC 253 Collaborative Software Design Rate My Professor Chen Ding</title>
  853. <link>https://roclocality.org/2022/02/21/csc-253-collaborative-software-design-rate-my-professor-chen-ding/</link>
  854. <comments>https://roclocality.org/2022/02/21/csc-253-collaborative-software-design-rate-my-professor-chen-ding/#comments</comments>
  855. <dc:creator><![CDATA[dcompiler]]></dc:creator>
  856. <pubDate>Mon, 21 Feb 2022 14:18:06 +0000</pubDate>
  857. <category><![CDATA[cs253]]></category>
  858. <category><![CDATA[teaching]]></category>
  859. <guid isPermaLink="false">http://roclocality.org/?p=3182</guid>
  860.  
  861. <description><![CDATA[University of Rochester Computer Science CSC 253/453 and TCS 453 Collaborative Programming and Software Design Modern software is complex and more than a single person can fully comprehend. This course teaches collaborative programming which is multi-person construction of software where each person&#8217;s contribution is non-trivial and clearly defined and documented.  The material to study includes design [&#8230;]]]></description>
  862. <content:encoded><![CDATA[
  863. <p><strong>University of Rochester Computer Science</strong></p>
  864.  
  865.  
  866.  
  867. <p><strong>CSC 253/453 and TCS 453 Collaborative Programming and Software Design</strong></p>
  868.  
  869.  
  870.  
  871. <p>Modern software is complex and more than a single person can fully comprehend. This course teaches collaborative programming which is multi-person construction of software where each person&#8217;s contribution is non-trivial and clearly defined and documented.  The material to study includes design principles, safe and modular programming in modern programming languages, software teams and development processes, design patterns, and productivity tools.  The assignments include collaborative programming and software design and development in teams.  The primary programming language taught and used in the assignments is Rust.  Students in CSC 453 have additional reading and requirements.</p>
  872.  
  873.  
  874.  
  875. <p><em>Prerequisites: CSC 172 or equivalent for CSC 253 and TCS 453.  CSC 172 and CSC 252 or equivalent for CSC 453. </em> </p>
  876.  
  877.  
  878.  
  879. <p><strong>Fall 2020 Student Evaluation </strong></p>
  880.  
  881.  
  882.  
  883. <p>Anonymous inputs were collected by the university before the final exam.  14 out of 33 students (44%) submitted the evaluation.  </p>
  884.  
  885.  
  886.  
  887. <p>The overall Instructor Rating is 4.21 and Course Rating 4.00.</p>
  888.  
  889.  
  890.  
  891. <p>Among the individual questions, the highest are 4.79 (The instructor was willing to listen to student questions and/or opinions), 4.71 (The instructor demonstrated sincere respect for students), and two COVID related questions both are 4.54 (the instructor clearly articulated course expectations to students, and the instructor noticed when students did not understand course material and adjusted accordingly). The lowest are 3.71 (The exams/assignments were clearly worded) and 3.93 (The instructor used examples that helped with understanding the material).</p>
  892. ]]></content:encoded>
  893. <wfw:commentRss>https://roclocality.org/2022/02/21/csc-253-collaborative-software-design-rate-my-professor-chen-ding/feed/</wfw:commentRss>
  894. <slash:comments>1</slash:comments>
  895. <media:content url="https://2.gravatar.com/avatar/bb1288802728ab165dbb621d90d7a89171da1a576aff99a753e919ee95b9f4ae?s=96&#38;d=identicon&#38;r=G" medium="image">
  896. <media:title type="html">dcompiler</media:title>
  897. </media:content>
  898. </item>
  899. </channel>
  900. </rss>
  901.  

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//roclocality.wordpress.com/feed

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda