那段时间我开发了一个工具,每月能帮助 1000 名计算机科学专业的学生。
采用
奎因·麦克卢斯基是谁?
原文发布于我的个人博客(格式更佳)
简而言之:我在 2013 年于美国大学 (AUC) 开发了一个在线工具,每月有来自世界各地学生的约 1000 次访问,并在包括哥伦比亚大学在内的几所知名大学的幻灯片中被提及。
七年前,我在开罗美国大学攻读计算机工程学士学位时,上过一门叫做“数字设计”的课程。现在回想起来,我觉得它原本应该叫“数字电子学”,但我又有什么资格去给课程命名呢!
这门课和我们通常意义上的设计毫无关系;它主要讲的是电子逻辑门的设计,用来构建处理器和基本的计算机系统。
课程的一部分是学习奎因-麦克卢斯基算法及其工作原理,然后学期项目是用 C++ 构建一个计算器来求解该算法。
幸运的是,完成作业后我检查了域名quinemccluskey.com,令我惊讶的是,它居然还能用😯😯
我立刻买下了域名,并开始用当时我有限的 PHP 知识将我的 C++ 程序转换成网站。我还使用了最早版本的 Bootstrap 来进行样式设计。请不要嫌弃当时的界面,毕竟那是 2013 年😅
采用
网站发布后,我将其连接到Google Analytics,然后将链接发布到几个社交媒体网站,并将其添加到 Quine McCluskey 的维基百科页面。
由于该算法是世界各地大多数计算机科学和电子学本科课程的标准教学内容,因此在世界各地的学生中有着相对广泛的需求。
查看 Google Analytics 数据可知,过去6 年里,近5 万用户访问了该网站。
此外,过去28 天的平均活跃用户数为 943 人。

Google 将活跃用户定义为“在 28 天内至少进行过一次会话的唯一用户数量”。
你注意到访客时间线有什么规律吗?
这是因为学生通常会在作业期或期中考试期间使用该工具,而期中考试通常在 11 月或 3 月,具体取决于学期。
这些游客来自哪里?

值得注意的是,通过在来源数据表中进行简单搜索,我们可以找到来自这些大学内部系统的访问者:
- 德克萨斯州立大学(美国)
- MSA(埃及)
- 奥本大学(美国)
- 国立宜兰大学(台湾)
- 湖南师范大学(中国)
- 铭传大学(台湾)
- 哥伦比亚大学(美国)
奎因·麦克卢斯基是谁?
在数字逻辑设计领域,一切都是逻辑函数,都可以简化为基本算术运算之一:加法、减法、乘法或除法。
即使是像图像/视频处理或机器学习算法这样最复杂的过程,也会在非常底层转换成这些简单的算术运算,以便能够在处理器/GPU卡内部的物理门和触发器中运行。
在计算机发展史的早期,工程师们过去常常通过手动设计和制造此类处理器,方法是找出如何将实际问题映射到一系列布尔函数,以便在电流通过处理板时输出正确的结果。
理论上,布尔函数是一个可以用多种方式表示的方程式;然而,应该存在一种最优的实现方式。这就是逻辑优化过程的意义所在。优化布尔函数最直接的方法之一是奎因-麦克拉斯基算法,它与卡诺图方法的作用相同,但适用于更多变量的情况。
Quine-McCluskey 算法是一种基于素蕴涵项概念的表格化且繁琐的方法。素蕴涵项是指无法通过与给定布尔函数中的任何其他项组合而进一步简化的乘积项或和项。
基本上,要使用 Quine-McCluskey 简化布尔函数,需要执行以下 6 个步骤。
为了简单起见,我省略了对“不在乎”概念的解释,但你可以在这里深入了解它。
步骤 1:
将所有最小项按二进制表示的升序排列,然后按每项中1的个数分组
这样最多可以得到n+1组,对应n 个最小项。
步骤 2:
比较每一组中的最小项与其后一组的最小项。如果只有一位发生变化,则将该位替换为“_”。
步骤 3:
对第一次比较结果重复步骤 2,得出主要蕴涵项。
步骤 4:
创建主蕴涵项覆盖表。主蕴涵项放在行中,最小项放在列中。
然后,划掉( X)与被主蕴涵项覆盖的最小项对应的单元格。
步骤 5:
现在我们需要求出必要素蕴涵项。必要素蕴涵项是指仅由一个素蕴涵项覆盖的最小项。这些必要素蕴涵项是简化布尔函数的最终形式。
步骤 6:
通过删除每个必要素蕴涵项所在的行以及与该必要素蕴涵项所涵盖的最小项对应的列来简化。
对质蕴涵项重复步骤 5,直到给定布尔函数的所有最小项都完成为止。
文章来源:https://dev.to/iammowgoud/that-time-i-built-a-tool-that-helps-1000-cs-students-every-month-22lp







