By Assad Ebrahim, on May 18th, 2010 (22,873 views) |
Topic: Maths--Tools, SWEng--Toolbox
Writing Beautiful Mathematics: Getting Started with LaTeX on Windows
If you haven’t done so already, you may want to start by reading the Preface to the Computing Series: Software as a Force Multiplier, Sections 1-3.
2nd ed. Revised with new templates Sep 21, 2019, 1st ed. May 18, 2010.
Getting Started with LaTex
LaTeX (open source, free) is an essential tool to write beautifully formatted mathematics efficiently. If you have extensive mathematical symbology and have been using MS Word for this, you are using the wrong tool for the job (see Figure below). Setting up LaTeX should take no more than an hour, after which you can produce publication-ready mathematical documents quickly and reliably. This article walks you through setting up a working platform for Windows, and provides the LaTeX templates you’ll need to produce your first examples. Also shared is the source code and compilation instructions for an example paper, which you can download and modify for your own use, containing several advanced stylistic elements (endnotes, figures with captions, URLs, code listings, and epigraphs).
An example of mathematics written in LaTeX, from Finite Summation of Integer Powers (Part 3), A. Ebrahim, C. Ouellette, 2010.
Continue reading this article…
By Assad Ebrahim, on February 22nd, 2010 (63,663 views) |
Topic: Maths--Tools
If you haven’t done so already, you may want to start by reading the Preface to the Computing Series: Software as a Force Multiplier, Sections 1-3.
Maxima: a Computer Algebra System (CAS) for symbolic computation
Last updated: Feb 19, 2023 (fixed links). Nov 11, 2022 (added omega-math’s excellent web interface, and generating function calculation of the partition of integers problem).
Maxima is a computer algebra system (CAS) for symbolic computation that is free, open source, runs on multiple operating systems (Win,Mac,Linux), and covers a wide range of mathematical capabilities and graphical capabilities. These include algebraic simplification, polynomials, methods from calculus, matrix equations, differential equations, number theory, combinatorics, hypergeometric functions, tensors, gravitational physics, PDEs, nonlinear systems, plus including 2-D/3-D plotting and animation. With a large and responsive user community, there is plenty of help to get up the learning curve, and with its active developer base, Maxima and its ecosystem continue to gain capability, including a fantastic web interface by Omega-Math/Vroom-Labs (see the screenshot below, r0*0). The result is a free, versatile, powerful mathematical computing package for engineers, scientists, mathematicians, programmers, and students. This article will help you get started with Maxima and set you up with resources to flatten the learning curve.
Omega-Math’s web interface to Maxima. Used here to calculate the first 10 elements of p(n), the number of ways to partition integer n, using a generating function comprising a truncated series of polynomials up to degree n=10
Continue reading this article…
…for Embedded and Low-Level Systems Development
C provides the convenience of learning one language while retaining the ability to target a variety of platforms including modern operating systems (Linux, Windows, Mac), real-time operating systems, systems-on-a-chip, and a host of microcontrollers for embedded development. And if you have to “mov” the bits around yourself (device drivers, DMA controllers), you can do that too. This is a significant efficiency over assembly languages which are essentially chip-specific control codes and therefore require understanding the architecture of the target chip.
Continue reading this article…
By Assad Ebrahim, on January 9th, 2010 (21,042 views) |
Topic: SWEng--Programming
2nd ed., Feb 1, 2024, 1st ed. Jan 9th, 2010
A common misconception is that assembly language programming is a relic of the past. This is certainly not the case, and assembly language remains a core knowledge area for embedded systems development, digital design, and algorithm development in the 21st century.
A second misconception, especially amongst those who are only familiar with higher level languages (Python, Ruby, C#/.NET, Perl), is that assembly language is a defective programming language and therefore not worth the time to invest in.
But assembly language is more than ‘just another general purpose programming language’. It is actually the control signal specification for the microprocessor or microcontroller that will be running the instructions, and whose digital design must be reasonably well understood in order to get it to work successfully.
Higher level languages typically hide the underlying toolchains behind turnkey integrated development environments (IDEs). But the toolchains are valuable in their own right, comprising various software components (pre-processor, compiler, assembler, linker, loader) which take the high level code and transform it to executable machine code that can run on the target processor, optionally producing assembly code for inspection along the way. Familiarity with this toolchain can help evaluate how much overhead the high-level tools introduce on the code, which is an important part of understanding how much you’re trading off.
In this article, we’ll look first take a look at the software toolchain involved in general terms, before turning to specific tools you can use on a modern Windows computer (through Windows 11) to target an x86 chip (no longer in your PC but in a DOS Emulator). Similar skills and approaches carry over to the toolchain for the Atmel 328P and ATTiny 85 with a graphics application (TinyPhoto) on the ATTiny85 here.
Continue reading this article…
|
Stats: 1,089,379 article views since 2010 (Aug '24 update)
Dear Readers: Welcome to the conversation! We publish long-form pieces as well as a curated collection of spotlighted articles covering a broader range of topics. Notifications for new long-form articles are through the feeds (you can join below). We love hearing from you. Feel free to leave your thoughts in comments, or use the contact information to reach us!
|