<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>csci3710 on Jonathan Cook</title>
    <link>http://www.cs.nmsu.edu/~jcook/tags/csci3710/</link>
    <description>Recent content in csci3710 on Jonathan Cook</description>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Tue, 20 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://www.cs.nmsu.edu/~jcook/tags/csci3710/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Index of C/C&#43;&#43; Pages</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/c-cpp-index/</link>
      <pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/c-cpp-index/</guid>
      <description>The most comprehensive C/C++ reference site is CPPReference.com, its main page is C++ but it also has a section on C. Because it is extensive and uses official definitions, it can sometimes be hard to read, but once you get used to it, it is great.
   (mostly) Plain C Pages (mostly) C++ Pages     Introduction to C/C++ Non-OOP C++ Features   The C Preprocessor C++ Pointers and References   Compiling and Linking OOP Fundamentals   Command-line Arguments OOP Inheritance   C Input and Output OOP Polymorphism   Plain C Strings C++ Strings   C Pointers C++ IO Streams   Structs and Unions C/C++ Numeric Conversion from Strings   Using Const C++ Friend Functions   The Make Tool The Gnu Debugger   Valgrind Memory Debugger Commenting Code    Interesting other resources Yale professor James Aspnes has great notes on C and other topics.</description>
    </item>
    
    <item>
      <title>CS371 Sprint Grading Rubric (maybe CS581 too)</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/sprint-grading-rubric/</link>
      <pubDate>Tue, 20 Aug 2024 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/sprint-grading-rubric/</guid>
      <description>This page contains the rubrics that the TA will use to evaluate team performance for each sprint. Sprint grades are not based on how much functionality you completed but rather how well your team is following some software engineering practices. (Yes, product quality and functionality will matter when it comes to final project grading, but the purpose of your project is also to learn and use good software development practices.)</description>
    </item>
    
    <item>
      <title>Class Project: Sprint Workflow</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/github-sprint-workflow-rules/</link>
      <pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/github-sprint-workflow-rules/</guid>
      <description>An overview picture of the workflow for a class project is:
During each project iteration (sprint), the team will work on making progress on their project and all of its associated parts (coding, documentation, etc.). This page has more detail about using specific GitHub capabilities.
Initial Kickoff: Brainstorming The team must flesh out their idea and brainstorm further details of what they want to do. A very good idea is to specify a Minimum Viable Product (MVP).</description>
    </item>
    
    <item>
      <title>Class Project: Github Milestones, Issues, Labels, &amp; Projects</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/github-project-rules/</link>
      <pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/github-project-rules/</guid>
      <description>Milestones Each team must create a milestone for each iteration; we will call the iterations &amp;ldquo;sprints&amp;rdquo;, so you will have the milestones &amp;ldquo;Sprint 1&amp;rdquo;, &amp;ldquo;Sprint 2&amp;rdquo;, etc. Make the due date of the milestone the date of the associated lab demo. At the beginning of a new sprint (right after a demo), you must select (and create, if needed) the issues that you will work on and assign them to the new sprint milestone.</description>
    </item>
    
    <item>
      <title>Class Project: Wiki Requirements</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/github-wiki-pages/</link>
      <pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/github-wiki-pages/</guid>
      <description>My CSCI 3710 and CS 581 team projects must use the GitHub Wiki for project documentation. Below are pages that must be included for CSCI 3710 projects (CS 581: you can be more creative, but also can use what is below); you are free to have other pages. You must use at least simple Markdown syntax to format your pages.
NOTE: Your GitHub project Wiki is stored in a Git repository, and can be cloned, pulled, and pushed just like your project repository.</description>
    </item>
    
    <item>
      <title>Course Project Hints and Tips</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/course-projects-hints/</link>
      <pubDate>Thu, 08 Sep 2022 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/course-projects-hints/</guid>
      <description>Below are some hints and tips to help you focus on creating a great course project!
Databases Many applications need to store and retrieve data that persists in between executions. A natural choice is some full-featured database, such as MySQL, MariaDB, or MongoDB. I recommend not using a full featured database, unless your team already has pretty good expertise in using it.
Your project does not need to support 100GB of data or 10,000 simultaneous users, so you can simplify your data storage choice in order to make more progress on your project&amp;rsquo;s functionality.</description>
    </item>
    
    <item>
      <title>Github Branching and Merging</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/github-branching-and-merging/</link>
      <pubDate>Thu, 22 Aug 2024 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/github-branching-and-merging/</guid>
      <description>Remember: Git is a code repository system, while GitHub is a cloud application for managing projects that use Git for their repository. You cannot blindly follow instructions that you find on the web for doing something in Git without understanding how it will interact with GitHub! Git does not care if there is a central &amp;ldquo;official&amp;rdquo; repository, but GitHub does (and it is the central, official repository).
Git&amp;rsquo;s homepage has a subtitle, &amp;ldquo;local branching on the cheap&amp;rdquo; &amp;ndash; and this is true, but you must know what &amp;ldquo;local&amp;rdquo; means.</description>
    </item>
    
    <item>
      <title>Software Engineering Posters</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/sweng-posters/</link>
      <pubDate>Sun, 17 Nov 2024 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/sweng-posters/</guid>
      <description>I have four &amp;ldquo;posters&amp;rdquo; for different topics in programming, software engineering. I should probably make the content of each of these a page here, but for now, here are links to the PDFS:
 Basic Programming Ideas Good OOP Programming SOLID Object Oriented Design Agile Software Development Good Testing Ideas  </description>
    </item>
    
    <item>
      <title>Git: Pretty Log Printing</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/git-pretty-logs/</link>
      <pubDate>Mon, 27 Nov 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/git-pretty-logs/</guid>
      <description>Git commands have many, many options for controlling what they do, and the command git log is no different.
One StackOverflow:pretty-git-logs thread has some suggested commands that create nice-looking textual graphs of git logs, and show the power of the commands.
One example is:
git log --graph --abbrev-commit --decorate --format=format:&#39;%C(bold blue)%h%C(reset) - %C(green)(%ar)%C(reset) %C(black)%s%C(reset) %C(dim white)- %an%C(reset)%C(red)%d%C(reset)&#39; --all What does all that mean? I leave it to you to investigate, but you can run the command on your own repository and get an idea by looking at the output.</description>
    </item>
    
    <item>
      <title>Visual Studio Code Help</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/vscode-help/</link>
      <pubDate>Wed, 15 Feb 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/vscode-help/</guid>
      <description>Visual Studio Code (VSCode) is not Visual Studio, but rather a separate code-centric editor and cross-platform mini-IDE. It&amp;rsquo;s actually a pretty nice development environment, though it can be a bit complex to customize to your liking.
VSCode is already available on the CS Departmental computers. VSCode is available at: https://code.visualstudio.com (along with lots of documentation and help), and I would recommend installing it on any other computers you use.
On Windows, these instructions seem to be good for setting up VSCode with gcc/g++.</description>
    </item>
    
    <item>
      <title>Unix Help Notes</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/unix-help/</link>
      <pubDate>Tue, 31 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/unix-help/</guid>
      <description>Below are old notes I had about the basics of Unix. These probably need edited quite a bit&amp;hellip;
Unix, Linux, MS Windows, MacOS, Android, iOS, and many more! All of the names in the header above are names of operating systems, or just &amp;ldquo;OS&amp;rdquo;. An OS is the fundamental software that controls the computer hardware (or phone, or tablet) and gives the user an interface to use the device.
The computers in the Computer Science labs (SH 118, 118B, and others) use Linux as their OS, and so learning how to use Linux is important for NMSU CS students.</description>
    </item>
    
    <item>
      <title>Unix Terminal Cheat Sheet</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/unix-cheatsheet/</link>
      <pubDate>Tue, 31 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/unix-cheatsheet/</guid>
      <description>Below is a table of the most common unix terminal commands and what they do. Always remember that when using a terminal, your terminal is in a particular directory (also called a folder), and the commands you do are going to operate relative to that directory, or on files in that directory.
   Command Meaning     pwd print working directory: it shows you what folder/directory you are in   ls list directory: it shows you what files and sub-directories are in here   ls -a list all: it will include hidden names that begin with a dot   ls -l list long: it will include detailed information about each file   cd dir change directory: this changes the folder/directory that your terminal is in; dir is relative unless it begins with a / (forward slash); .</description>
    </item>
    
    <item>
      <title>Git and Github</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/git-and-github/</link>
      <pubDate>Tue, 24 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/git-and-github/</guid>
      <description>In this course you will use the repository system Git, along with the popular hosted repository site GitHub. You will need to have a free student GitHub account in order to do the course individual and team project work. It would be a good idea for you to have a GitHub account and use it to host any significant course and extra projects that you have done, so that you can show recruiters a portfolio of your work.</description>
    </item>
    
    <item>
      <title>Unix Tutorials</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/unix-tutorials/</link>
      <pubDate>Mon, 16 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/unix-tutorials/</guid>
      <description>List of Unix Tutorial Web Sites I have not yet been able to review all of these sites for quality, but on first look they seem decent enough.
http://www1.udel.edu/it/help/unix/filemgmt.html
https://ubuntu.com/tutorials/command-line-for-beginners#1-overview
https://www.javatpoint.com/linux-tutorial
http://www.ee.surrey.ac.uk/Teaching/Unix/
https://www.tutorialspoint.com/unix/index.htm#
https://ryanstutorials.net/linuxtutorial/
https://www.guru99.com/unix-linux-tutorial.html
Cheat Sheets I have my own cheatsheet page. Another of my pages has some Unix help.
A useful command list because it starts with file and directory commands, what most people need to start with.</description>
    </item>
    
    <item>
      <title>Github Repo Access Keys (SSH)</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/github-access-keys/</link>
      <pubDate>Mon, 23 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/github-access-keys/</guid>
      <description>Github does not support allowing username/password access when using Git commands on your Github-hosted repositories. You have to set up keys to do this. There are alternative ways of doing this, but this page is only going to describe setting up SSH keys. Note that these directions are for Linux/Unix; MacOS should be similar (but you need the XCode tools I think); for possible Windows directions, see the bottom of this page.</description>
    </item>
    
    <item>
      <title>S/W Process and DevOps</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/process-devops/</link>
      <pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/process-devops/</guid>
      <description>Agile References The Agile Alliance is always the place to start.
Atlassian has nice agile resources.
A nice checklist for doing agile s/w development.
101Ways (used to be All About Agile) has lots of good reading.
Nice simple FAQ on user stories at Mountain Goat Software.
An article on keeping user stories small at GoodRequirements.com.
A good article on splitting user stories. And another.
A description of how Agile thinking can go wrong.</description>
    </item>
    
    <item>
      <title>Static Analysis Tools</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/static-analysis-tools/</link>
      <pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/static-analysis-tools/</guid>
      <description>This page is a random-ish collection of links to static analysis resources.
Formal verification tools OpenJML OpenJML is a toolset for static and dynamic checking of JML (Java) assertions. Uses a variety of SMT automatic theorem provers, default configuration uses Microsoft&amp;rsquo;s Z3 prover. https://github.com/Z3Prover/z3
KeY Project KeY is a verification system that uses an interactive theorem prover to verify Java/JML and other languages. In theory an interactive theorem prover can be much more powerful than an automatic one (e.</description>
    </item>
    
    <item>
      <title>Domain Modeling</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/domain-modeling/</link>
      <pubDate>Wed, 04 Oct 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/domain-modeling/</guid>
      <description>In software engineering, requirements analysis is all about figuring out what the problem is that you are going to build software to solve. When properly done, it is completely separate from making decisions on how the software will solve the problem (which is design).
Part of understanding the problem is understanding the concepts and their relationships in the problem domain. Domain Modeling is a way to do this. It is essentially one exercise in Object Oriented Analysis (OOA).</description>
    </item>
    
    <item>
      <title>User Stories</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/user-stories/</link>
      <pubDate>Tue, 03 Oct 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/user-stories/</guid>
      <description>You will capture the functional requirements of your system in user stories, a popular agile method for documenting and writing down system functionality. A user story is a concise statement of something that a user should be able to do with your system; in some sense you are capturing a feature or capability of your system, but from the user&amp;rsquo;s perspective. This is useful because it forces you to stay focused on why this capability is justified in your system.</description>
    </item>
    
    <item>
      <title>GUI Applications: Overview</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/gui-code-model/</link>
      <pubDate>Fri, 08 Sep 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/gui-code-model/</guid>
      <description>Building a GUI application&amp;mdash;one with a Graphical User Interface, or GUI&amp;mdash;is not too hard once you understand the basic architecture and control flow of how a GUI application works. Maybe you have programmed lots of course assignments already, but these all started at main() and then ended when your code finished. All the time, your code was in control.
The first fundamental mental shift that you have to make for GUI programming is that your code is not in control.</description>
    </item>
    
    <item>
      <title>JaCoCo: Code Coverage Analysis for Java</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/jacoco-tutorial/</link>
      <pubDate>Tue, 29 Aug 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/jacoco-tutorial/</guid>
      <description>JaCoCo is a tool for code coverage analysis for Java. What this means is that it instruments your code, watches it as it runs, and tracks and computes coverage, or what statements the run actually executed. Most usefully, it can also aggregate coverage data from multiple runs and tell you which statements were executed, and which were not, over all of the runs together.
For white box testing, tools like this are imperative to use, so that you can tell what code your tests covered and what code they did not.</description>
    </item>
    
    <item>
      <title>JUnit: Automating Java Unit Tests</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/junit-tutorial/</link>
      <pubDate>Tue, 29 Aug 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/junit-tutorial/</guid>
      <description>JUnit is an extremely popular tool that automates Java unit testing. It acts as the driver for testing Java classes, and although it this is mostly thought of as testing individual classes (unit testing), it can be used to drive tests for any level of integration testing below a complete system.
This page walks through a simple example of creating and executing simple JUnit tests. Note that we are using JUnit5 in this example.</description>
    </item>
    
    <item>
      <title>MVC in JavaFX: The Internet is Wrong!</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/javafx-mvc/</link>
      <pubDate>Mon, 09 Oct 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/javafx-mvc/</guid>
      <description>MVC, or Model-View-Controller, is an architectural pattern (or a design pattern) that is heavily used in interactive (namely GUI) applications. You find plenty of reading on it, but one of the main ideas behind MVC is that you separate your domain code from your interaction code. This means that your code that is managing your problem domain data and solving your problem domain computations is completely separate and independent of your GUI code.</description>
    </item>
    
    <item>
      <title>JavaFX: A Newer Java UI Framework</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/javafx-hello/</link>
      <pubDate>Tue, 29 Aug 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/javafx-hello/</guid>
      <description>For a long time Java Swing has been the UI library/framework that was used to create GUI (Graphical User Interface) programs in Java. But in recent years, a new framework called JavaFX has come along, and it has become popular. Some features of JavaFX that are nice are: using HTML and CSS to style UI features rather than raw Java code, and built-in 2D and 3D graphics, and sound (I think).</description>
    </item>
    
    <item>
      <title>Agile Resources</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/agile-resources/</link>
      <pubDate>Fri, 01 Dec 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/agile-resources/</guid>
      <description>This is copied from an &amp;ldquo;Agile Resources&amp;rdquo; Canvas page, and needs lots of work. I should really start a whole series of Agile pages.
Resources The Agile Alliance is the best starting place for Agile development resources.
Mountain Goat Software has some good Agile resources.
101 Ways has some good resources.
Agile Scout seems to have good content.
James Shore, the Art of Agile is an agile practitioner, author, and teacher.</description>
    </item>
    
    <item>
      <title>Classic SE Mistakes by Steve McConnell</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/classic-se-mistakes-mcconnell/</link>
      <pubDate>Tue, 12 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/classic-se-mistakes-mcconnell/</guid>
      <description>The content of this page (below this paragraph) is authored by Steve McConnell, and includes his copyright notice on the top and at the bottom. It was accessed from the Internet Archive, at the following link: https://web.archive.org/web/20110821003329/http://www.stevemcconnell.com/rdenum.htm . It is copied here and formatted for easy access and is used under fair use principles. A shorter scanned article from IEEE Software is available on Steve&amp;rsquo;s website, as well as a longer PDF article from his company Construx.</description>
    </item>
    
    <item>
      <title>Entrepreneurship: Resources </title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/entrepreneurship/</link>
      <pubDate>Tue, 29 Aug 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/entrepreneurship/</guid>
      <description>Who doesn&amp;rsquo;t want to create the next great product, amaze the world, and reap the reward? It&amp;rsquo;s something that many of us won&amp;rsquo;t ever be able to fit into our lives, due to the choices we make and the constraints that follow, but it&amp;rsquo;s always fun to think about, and some of the ideas can be applied to class project ideas.
Disciplined Entrepreneurship Bill Aulet designed Disciplined Entrepreneurship as a structured way to pursue a novel product venture.</description>
    </item>
    
    <item>
      <title>Code Development on Windows and MacOS</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/dev-on-windows-macos/</link>
      <pubDate>Thu, 12 Dec 2024 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/dev-on-windows-macos/</guid>
      <description>It is very beneficial for CS students to be able to develop code on your own machines, which probably are running either Windows or MacOS. It is good to learn to use Linux too, but there&amp;rsquo;s nothing like creating programs that run on the OS that you use regularly!
For truly native coding you should really use the development tools that the OS creator provides: this is Visual Studio (VS) for Windows, and XCode for MacOS.</description>
    </item>
    
    <item>
      <title>Data Sources and APIs</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/data-apis/</link>
      <pubDate>Fri, 10 Mar 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/data-apis/</guid>
      <description>Interesting programming assignments often need some data. Below is just some resources I don&amp;rsquo;t want to forget about.
Data.gov provides government data
CKAN seems to be the base of many APIs (including data.gov)
List of open APIs
DataUSA a portal to US government data?
Star Wars Data May the Force be with you&amp;hellip;
More Gov Data
Weather Data: Getting Daily Readings NOAA weather station data and much more. To get weather station data, do: search tool -&amp;gt; select daily summaries -&amp;gt; select date range -&amp;gt; select station -&amp;gt; enter city or something -&amp;gt; select station that has a decent date range (some are new or old) -&amp;gt; add to cart -&amp;gt; view cart -&amp;gt; choose csv -&amp;gt; select all (location, flags, precip, water) -&amp;gt; enter email -&amp;gt; submit.</description>
    </item>
    
    <item>
      <title>Well Commented Code</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/commenting-code/</link>
      <pubDate>Wed, 25 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/commenting-code/</guid>
      <description>This page needs updated to talk about Doxygen and Javadoc. In class when I am programming examples live I generally do not put very many comments in the code. This is really for three (intertwined) reasons: first, I am actively talking about the code, so it is really verbally commented in class; secondly, since it is verbally discussed, I don&amp;rsquo;t want to take the time to type out comments in class; and thirdly, since I am displaying in a large font, I want to have as much code as I can on the screen.</description>
    </item>
    
    <item>
      <title>Github Labels</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/github-labels/</link>
      <pubDate>Tue, 11 Oct 2022 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/github-labels/</guid>
      <description>GitHub default labels are terrible! Here&amp;rsquo;s some thoughts for better labels
First, labels serve many annotation purposes, and so categories are useful. I prefer the three categories of: status, priority, and type. Each label will begin with its category name, then a colon, then the uiniqe label name.
Second, random colors are a bad idea; you could get a very strong color on a not-so-important label. I think I prefer one color group per category, but I&amp;rsquo;m still evaluating this.</description>
    </item>
    
    <item>
      <title>CSCI 3710 Project Ideas</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/project-ideas/</link>
      <pubDate>Fri, 30 Aug 2024 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/project-ideas/</guid>
      <description>Students often come up with great ideas for neat projects, but sometimes it is hard to think from a blank sheet of paper. So below are some project thoughts and ideas.
Project Constraints In CSCI 3710 projects must be implemented in Java or C++. By far most teams use Java. Remember, the whole team must agree on the language, so just because you as an individual might prefer C++ and be good at it, the whole team may not be.</description>
    </item>
    
    <item>
      <title>Project Management Tools</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/project-management/</link>
      <pubDate>Wed, 07 Feb 2024 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/project-management/</guid>
      <description>Some interesting project tools that I want to keep track of.
 Notion is a new hosted management tool. Does lots of stuff, maybe free for education? Free for personal, but probably no &amp;ldquo;family&amp;rdquo; level integration ClickUp is another new project management tool. RoundUp Issue Tracker. I used RoundUp many years ago; it is still around, and simple! Trac Issue Tracker. Trac is another that seems fairly basic and easy to install/maintain.</description>
    </item>
    
    <item>
      <title>Implementation Thoughts</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/good-implementation/</link>
      <pubDate>Wed, 23 Aug 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/good-implementation/</guid>
      <description>Once you have thought about program design, even down to your classes and their interfaces (public methods), you still have to write the code in the methods. What sort of good ideas are there to help with this? Below are a few thoughts.
Keep Code ASAP: As Simple As Possible The first goal of coding is to keep your code as simple as possible for the problem that you are solving.</description>
    </item>
    
    <item>
      <title>User Interface Design</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/user-interface-design/</link>
      <pubDate>Mon, 18 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/user-interface-design/</guid>
      <description>UID is a part of the software development process that often has a big impact on the success of a product &amp;ndash; not that the product does not need to be high quality in its internals, but a great, elegant, user interface (or UX, user experience) can make or break a mass market product.
Some useful UI links:
 A modern UX checklist Thinking about usability Start of an entire online textbook on task-oriented design Things (objects) matter too A UI industry overview  </description>
    </item>
    
    <item>
      <title>Requirements Specification Outline</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/requirements-spec-outline/</link>
      <pubDate>Fri, 15 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/requirements-spec-outline/</guid>
      <description>Note this outline is based on the outline in Software Engineering, 4th Edition, by Pfleeger and Atlee, ISBN 9780136096726, weblink.
Requirements Specification for [Project/Product Name] 1. Introduction 1.1 Purpose of Product A one-paragraph description of your product&amp;rsquo;s purpose.
1.2 Scope of Product A short description of your product&amp;rsquo;s scope (what it includes and what it does not include). Part of your problem statement might be useful here, but focus on the scope of the product.</description>
    </item>
    
    <item>
      <title>The Ant Build Tool</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/ant-build-tool/</link>
      <pubDate>Fri, 15 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/ant-build-tool/</guid>
      <description>ant (or Ant) is the Java world&amp;rsquo;s equivalent of make, the old standby build tool in the C/C++ world.
The official Ant home is https://ant.apache.org/ and this is a good place to start. It has a full manual, which is probably overkill, but if you go to &amp;ldquo;Using Apache Ant&amp;rdquo; and then &amp;ldquo;Writing a Simple Buildfile&amp;rdquo;, there is an example in that page that is kind-of simple, but not quite as simple as possible.</description>
    </item>
    
    <item>
      <title>Using Jenkins</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/using-jenkins/</link>
      <pubDate>Fri, 15 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/using-jenkins/</guid>
      <description>I have set up a Jenkins CI (continuous integration) server here: http://anonymous.cs.nmsu.edu:8800/ (Links to an external site.) .
Each of you have an account: the username is either your CS username or your NMSU username, so try the other if the first does not work, and your initial password is your Aggie ID. You can change your password if you like, but I would recommend not using your CS or NMSU password.</description>
    </item>
    
    <item>
      <title>Unit Testing: Black Box and White Box</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/testing-bb-wb/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/testing-bb-wb/</guid>
      <description>This page is my own shorter description of a few of the basic unit testing ideas found in the paper Software unit test coverage and adequacy, by Zhu et al., ACM Computing Surveys 29(4), pp 366-427, 1997. Although old, this paper is a good foundational survey of unit testing ideas.
Unit Testing The Internet has myriad descriptions of unit testing. Basically we are testing an isolated software component apart from a whole system.</description>
    </item>
    
  </channel>
</rss>
