This document discusses Verilog programming and FPGA based system design. It provides examples of half adder, full adder, and 4-bit full adder modules written in Verilog. It also discusses module instantiation and design hierarchy. Lexical conventions in Verilog such as comments, operators, numbers, identifiers, and data types are described. Data types covered include wires, registers, vectors, and integer, real, and time register types.