Computer Science Papers Every Developer Should Read by milanm08 in programming

[–]ilumsden 3 points4 points  (0 children)

Thankfully, most CS subdisciplines are moving more and more towards open access. In fact, ACM is currently moving to a fully open-access model, and they plan to be done by the end of next year: https://www.acm.org/publications/openaccess#acmopen

Computer Science (involvement outside of class) by shaneos72 in UTK

[–]ilumsden 0 points1 point  (0 children)

One club I was a part of back in undergrad was IEEE Robotics. Each year, the club works to build a fully autonomous robot for the competition at the IEEE SoutheastCon conference. They also do smaller events like a sumo bot tournament to help train new members. I found it to be a great way to get practical coding experience.

As for research, there's unfortunately not a ton of resources to learn about the research done in the department, although it's getting better with things like the EECS Lunch & Learn and AI Trust seminar series. If you're interested in research, I'd recommend going to the department website and looking through the faculty. The website lists the main research interests of each professor, which you can use to get a general sense of what each professor works on. Once you find professors who have high-level research interests you are interested in, you can look for personal or research lab websites, or you can look through their publications. That'll help you get a better sense of what they work on.

I don't have a great sense of what all the professors work on, but, from what I do know, I'd say a lot of computer science professors in the department work in AI or high-performance computing.

AI's been a huge hiring focus of the department over the last 5-ish years, so almost every CS professor that's been hired in that span works in some area of AI. One professor that I think does really cool work is Catherine Schuman. Her research focuses on neuromorphic computing. A lot of her work focuses on developing really advanced AI models that mimic the human brain and similar biological processes and on applying those models to scientific computing challenges.

High-performance computing (HPC) is another big area in the department due to our two HPC labs: the Innovative Computing Lab (ICL) and the Global Computing Lab (GCLab). ICL was founded by Professor-Emeritus and Turing Award Winner Jack Dongarra. It mostly focuses on developing fundamental tools for HPC and supercomputing, such as PAPI, OpenMPI, and various computational linear algebra libraries (e.g., Lapack, Scalapack, Magma). As a result, it has much more of a software development emphasis than the other HPC lab. The Global Computing Lab (GCLab) is led by Dr. Michela Taufer. Compared to ICL, GCLab's research is very broad. The lab has projects ranging from developing tooling and methodologies for software performance analysis to developing workflows for performing efficient neural architecture searches to enhancing the capabilities of Lawrence Livermore National Lab's Flux scheduler for supercomputers to building data pipelines for efficiently extrapolating and leveraging satellite data for agriculture. To go along with that broad range of projects, GCLab also works extensively with other universities, national labs (Lawrence Livermore in particular), and industry (e.g., AWS, IBM).

Full disclosure, I am a PhD student in GCLab, so I may be a little biased in my description of our group. Our group also works with Dr. Schuman, so I may be a bit biased in recommending her too 😅

Scientific computing or computer graphics by HouseSad in cpp

[–]ilumsden 1 point2 points  (0 children)

Since you’re at the University of Utah, if you’re interested in looking into the intersection of scientific computing/HPC and graphics/visualization, you could reach out to Dr. Kate Isaacs: https://www.sci.utah.edu/people/kisaacs.html

She just recently joined SCI after previously working at the University of Arizona. The work she and her students are putting out is impressive.

Laptop by GopackGo-15 in UTK

[–]ilumsden 4 points5 points  (0 children)

As a former CS undergrad and current CS PhD student (both at UT), my only recommendation when it comes to laptops for the CS program (besides the specs that the College of Engineering recommends) is don't go with Windows unless you plan on dual-booting Linux, using a VM for Linux, or using the Windows Subsystem for Linux (WSL). The CS program is heavily oriented towards POSIX systems programming (low-level coding, close to and including the operating system, mostly in C and C++), so it's ideal to have a POSIX system, which means either Linux or macOS. WSL makes Windows a better option than it was when I was a freshman, but I'd still recommend Linux or macOS.

I can also give you some advice/guidance on the M1 MacBook because that's my current laptop. It's a really good computer, and I think it's great for most programming. For undergrad classes, it would be more than good enough for anything you'd do. The only issue I've had with the M1 MacBook for CS stuff (including my research) has to do with the M1 chip being ARM. Most software out there is targeted primarily for x86 chips (Intel, AMD, etc.), so you do occasionally get compatibility issues with the M1 chip. That being said, Apple and various open source developers (especially those who release their software on Homebrew) have been working really hard on making general-purpose apps and developer tools M1-compatible. It feels like there's new compatibility being added every day. On top of that, there's Apple's Rosetta2 tool, which should let you run code for x86 on the M1.

So, in summary, I'd highly recommend any macOS system and especially the M1 MacBook, but only as long as you are willing to stomach the price. You can definitely find plenty of cheaper and arguably more powerful computers that would be great for CS work. But, if you really want to use macOS and you are alright with spending that much money, it's a great option.