**Code Synthesis.** In addition to generating high-quality natural language text, existing LLMs also show strong abilities to generate formal language, especially computer programs (_i.e._, code) that satisfy specific conditions, called _code synthesis_[635]. Unlike natural language generation, as the generated code can be directly checked by execution with corresponding compilers or interpreters, existing work mostly evaluates the quality of the generated code from LLMs by calculating the pass rate against the test cases, _i.e._, pass@_k42_. Recently, several code benchmarks focusing on functional correctness are proposed to assess the code synthesis abilities of LLMs, such as APPS [378], HumanEval [105], and MBPP [208]. Typically, they consist of diverse programming problems, with text specification and test cases for correctness checking. To improve such an ability, it is key to fine-tuning (or pre-training) LLMs on code data, which can effectively adapt LLMs to code synthesis tasks [86]. In addition, existing work has proposed new strategies to generate code, _e.g._, sampling multiple candidate solutions [208] and planning-guided decoding [636], which can be considered as the imitation of bug-fixing and code-planning processes by programmers. Impressively, LLMs have recently shown competitive performance with humans by achieving a ranking of the top 28% among users on the programming contest platform Codeforces [114].